jmeter-Java關於MD5加密方法 以及16位32位互轉


MD5即Message-Digest Algorithm 5(信息-摘要算法5),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實現。將數據(如漢字)運算為另一固定長度值,是雜湊算法的基礎原理,MD5的前身有MD2、MD3和MD4。廣泛用於加密和解密技術,常用於文件校驗。校驗?不管文件多大,經過MD5后都能生成唯一的MD5值。好比現在的ISO校驗,都是MD5校驗。怎么用?當然是把ISO經過MD5后產生MD5的值。一般下載linux-ISO的朋友都見過下載鏈接旁邊放着MD5的串。就是用來驗證文件是否一致的。

小編在日常使用中發現,MD5加密有多種,而第三方只會告訴你他們使用的是MD5加密並不會告訴你是那種方法。因此小編在這里提供小編在日常使用過的兩種方法:

第一種:

package hehe.md5;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Str2MD5 {
public String MD5(String sourceStr) {



String result = "";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(sourceStr.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
//buf.append(String.format("%02X", b[offset]));
}
result = buf.toString();
// String a = result.toUpperCase();
// System.out.println("MD5(" + sourceStr + ",32) = " + result);
// System.out.println("MD5 32大寫:"+a);
// System.out.println("MD5(" + sourceStr + ",16) = " + buf.toString().substring(8, 24));



} catch (NoSuchAlgorithmException e) {
System.out.println(e);
}
return result;
}

}

第二種:先寫一個Util類

  public static String toHexString(byte[] bytes) {
         StringBuffer buffer = new StringBuffer();
         for (int i = 0; i < bytes.length; i++) {
             buffer.append(String.format("%02X", bytes[i]));
         }
         return buffer.toString();
    }
 
 public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException  {
String a ="";
MessageDigest md5Tool = MessageDigest.getInstance("MD5");
         byte[] md5Data = md5Tool.digest(a.toString()).getBytes("UTF-8"));
         String sn = Util.toHexString(md5Data);

}

 

關於MD5 的大小寫轉換以及 32位於16位可以使用 toUpperCase()  toLowerCase()   substring(8, 24)   來進行轉換,還有16位加密根據甲方的要求來截取

MD5算法具有以下特點:
  1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
  2、容易計算:從原數據計算出MD5值很容易。
  3、抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
  4、弱抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
  5、強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD5值,是非常困難的。
  MD5的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被”壓縮”成一種保密的格式(就是把一個任意長度的字節串變換成一定長的十六進制數字串)。除了MD5以外,其中比較有名的還有sha-1、RIPEMD以及Haval等。

 


免責聲明!

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



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