MD5属不属于加密算法,因为只可以加密,无法获得密码原文,只能属于算法。
常用加密算法可以分为单向加密和双向加密。
MD5信息摘要算法 (英语:MD5 Message-Digest Algorithm),一种被广泛使用的 密码散列函数 ,可以产生出一个128位(16 字节 )的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家 罗纳德·李维斯特 (Ronald Linn Rivest)设计,于1992年公开,用以取代 MD4 算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如 SHA-2 。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如 SSL 公开密钥认证或是 数字签名 等用途。
输入任意长度的信息,经过处理,输出都是128位的信息值
不同的输入对应的输出一定不同,保证唯一性
优点:
缺点:
5.MD5加密 代码实现:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* MD5加密
*/
public class MD5Utils {
public static String code(String str){
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.update(str.getBytes());
byte[]byteDigest = messageDigest.digest();
int i;
StringBuffer buffer = new StringBuffer("");
for (int offset = 0; offset<byteDigest.length;offset++){
i = byteDigest[offset];
if(i<0){
i+=256;
}
if(i<16){
buffer.append("0");
}
buffer.append(Integer.toHexString(i));
}
//32位加密
return buffer.toString();
//16位加密
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
}