Java的MD5、SHA-1加密
严格地说,MD5,SHA1非加密算法,它们都不可逆:
但不能阻止山大的女博士王某某的哈希碰撞~ 我擦~ 反正MD5也不安全了==
Java实现算法如下:
MD5(Message Digest algorithm 5,信息摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)
?
例子:
package com.md5;
import java.math.BigInteger;
import java.security.MessageDigest;
public class Md5 {
public String makeMD5(String password) {
?? MessageDigest md;
?? try {
??? // 生成一个MD5加密计算摘要
??? md = MessageDigest.getInstance("md5"); // 同样可以使用SHA1
??? // 计算md5函数
??? md.update(password.getBytes());
??? // digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
??? // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
??? String pwd = new BigInteger(1, md.digest()).toString(16); //参数也可不只用16可改动,当然结果也不一样了
??? System.err.println(pwd);
??? return pwd;
?? } catch (Exception e) {
??? e.printStackTrace();
?? }
?? return password;
}
public static void main(String[] args) {
?? Md5 md5 = new Md5();
?? md5.makeMD5("123456");
}
}