MD5加密與Hash加密


一.Md5加密

MD5算法具有以下特點:
1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
2、容易計算:從原數據計算出MD5值很容易。
3、抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
4、強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
MD5的作用是讓大容量信息在用 數字簽名軟件簽署私人 密鑰前被" 壓縮"成一種保密的格式(就是把一個任意長度的字節串變換成一定長的 十六進制數字串)。除了MD5以外,其中比較有名的還有 sha-1RIPEMD以及Haval等。
 
MD5 是非對稱的加密算法(PS:對稱加密就是加密用的密碼和解密用的密碼是一樣的,非對稱就是加密和解密用的密鑰不一樣)
 
 1 實現代碼:
 2 public class MD5 {
 3     /**
 4      * MD5方法
 5      * 
 6      * @param text 明文
 7      * @param key 密鑰
 8      * @return 密文
 9      * @throws Exception
10      */
11     public static String md5(String text, String key) throws Exception {
12         //加密后的字符串
13         String encodeStr=DigestUtils.md5Hex(text + key);
14         System.out.println("MD5加密后的字符串為:encodeStr="+encodeStr);
15         return encodeStr;
16         }
17 
18 }

二.Hash加密

1. hashcode值是int的,64位。int hashCode()。
2. java object類默認的hashcode()計算方法是根據對象的內存地址來計算的。所以可由此來判斷默認不重寫hashcode()方法的兩個對象是否相同。
3. 可重寫obejetc 類的hashCode()方法,去根據object對象的實際內容生成hashcode值,比如String類,改寫了hashcode(),根據string字符串的內容區生成hashcode,而非根據object類默認的內存地址。
4.hashcode值是64為int值。hashcode值是不可逆的,即無法根據hashcode值反推原值。但要注意:hashcode是可能重復的,及不同的原始值,可能hashcode相同。這也就是為什么hashmap還有個equal()方法來判斷兩個值是否相等。

 1 public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
 2 
 3     
 4     String ps = "111111ieou";
 5 
 6     MessageDigest messageDigest;
 7     messageDigest = MessageDigest.getInstance("SHA-256");
 8     messageDigest.update(ps.getBytes("UTF-8"));
 9     String encodeStr = byte2Hex(messageDigest.digest());
10 
11     System.out.println(encodeStr);
12 
13 }
14 
15 private static String byte2Hex(byte[] bytes) {
16     StringBuilder stringBuffer = new StringBuilder();
17     String temp = null;
18     for (int i = 0; i < bytes.length; i++) {
19         temp = Integer.toHexString(bytes[i] & 0xFF);
20         if (temp.length() == 1) {
21         //byte轉16進制若結果是一位的進行補0操作
22             stringBuffer.append("0");
23         }
24         stringBuffer.append(temp);
25     }
26     return stringBuffer.toString();
27 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM