MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错)。任何长度的任意内容都可以用MD5计算出散列值。
介绍工具:CalcMD5.zip。 MD5算法不可逆,也就是只能得到内容对应的MD5值,无法由MD5值反推内容。对于不同的内容产生相同MD5值的概率非常非常非常低!
Password字段保存用户输入密码的MD5值,这样系统管理员、黑客也不知道用户的密码是什么,也就避免了用户的其他系统密码被利用的问题(思考:密码明文存储有哪些缺点?)。
判断密码正确性的方法:计算用户输入的密码的MD5值,与数据库存储的MD5值进行比较,如果相等则认为密码正确。为什么很多网站只有密码重置,没有找回原密码功能?。
应用:计算文件的MD5值来检验文件没有被篡改过。
1、MD5算法不是一种加密算法。因为有加密就有解密,而MD5算法算出来的值是不能解密的,也就是说MD5没有解密。是算法但不是加密算法。不管明文长度是多少,经过MD5算法计算后得到的MD5值长度都是固定的。
2、MD5算法不仅可以计算一个字符串的MD5值,还可以计算一个文件的MD5值。
1.获取信息摘要对象:md5
通过信息摘要单例的构造函数获取:
MessageDigest md5 = MessageDigest.getInstance(“MD5”);
1
2
2.信息摘要对象是对字节数组进行摘要的,所以先获取字符串的字节数组.
byte[] bytes = str.getBytes();
1
2
3.信息摘要对象对字节数组进行摘要,得到摘要字节数组: