java工具类实现MD5加密、SHA数字签名
MD5:一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致
SHA:该SHA(安全散列算法)是加密散列函数族。它与MD5非常相似,只不过它会产生更强的哈希值。然而,这些散列并不总是唯一的,这意味着对于两个不同的输入,我们可以具有相等的散列。当发生这种情况时,它被称为“碰撞”。SHA中的碰撞几率小于MD5。但是,不要担心这些碰撞,因为它们真的非常罕见。
代码:
import java.security.MessageDigest;
public class 签名 {
public static void main(String[] args) throws Exception{
String lzg="https://blog.****.net/u010756046";//密文
MessageDigest m;
StringBuilder str;
byte[]by;
m=MessageDigest.getInstance("MD5");
m.update(lzg.getBytes("UTF-8"));
by=m.digest();
str=new StringBuilder();
for(int i=0;i<by.length;i++) {
str.append(Integer.toHexString((0x000000FF & by[i]) | 0xFFFFFF00).substring(6));
}
System.out.println("MD5(16):"+str.substring(8, 24));
System.out.println("MD5(32):"+str);
m=MessageDigest.getInstance("SHA-1");
m.update(lzg.getBytes("UTF-8"));
by=m.digest();
str=new StringBuilder();
for(int i=0;i<by.length;i++) {
str.append(Integer.toHexString((0x000000FF & by[i]) | 0xFFFFFF00).substring(6));
}
System.out.println("SHA-1 :"+str);
m=MessageDigest.getInstance("SHA-224");
m.update(lzg.getBytes("UTF-8"));
by=m.digest();
str=new StringBuilder();
for(int i=0;i<by.length;i++) {
str.append(Integer.toHexString((0x000000FF & by[i]) | 0xFFFFFF00).substring(6));
}
System.out.println("SHA-224:"+str);
m=MessageDigest.getInstance("SHA-256");
m.update(lzg.getBytes("UTF-8"));
by=m.digest();
str=new StringBuilder();
for(int i=0;i<by.length;i++) {
str.append(Integer.toHexString((0x000000FF & by[i]) | 0xFFFFFF00).substring(6));
}
System.out.println("SHA-256:"+str);
m=MessageDigest.getInstance("SHA-384");
m.update(lzg.getBytes("UTF-8"));
by=m.digest();
str=new StringBuilder();
for(int i=0;i<by.length;i++) {
str.append(Integer.toHexString((0x000000FF & by[i]) | 0xFFFFFF00).substring(6));
}
System.out.println("SHA-384:"+str);
m=MessageDigest.getInstance("SHA-512");
m.update(lzg.getBytes("UTF-8"));
by=m.digest();
str=new StringBuilder();
for(int i=0;i<by.length;i++) {
str.append(Integer.toHexString((0x000000FF & by[i]) | 0xFFFFFF00).substring(6));
}
System.out.println("SHA-512:"+str);
}
}
运行结果: