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.csdn.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);
	}
}

運行結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章