MD5是一種常用的哈希算法,可以將任意長(zhǎng)度的數(shù)據(jù)按照固定的規(guī)則映射成一個(gè)128位的數(shù)值,所以它也被稱為128位MD5哈希值。
在ASP和Java中,都可以使用MD5算法進(jìn)行加密操作,下面我們來(lái)看看具體的實(shí)現(xiàn)方法。
'ASP中使用MD5加密 Function MD5Encrypt(str) Dim md5, result Set md5 = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider") result = md5.ComputeHash_2((StrConv(str, vbUnicode))) Set md5 = Nothing MD5Encrypt = ByteToString(result) End Function '將Byte數(shù)組轉(zhuǎn)換為字符串 Function ByteToString(arrBytes) Dim i, strHex strHex = "" For i = 0 To UBound(arrBytes) strHex = strHex & Hex(arrBytes(i)) Next ByteToString = strHex End Function
以上是ASP的MD5加密代碼,其實(shí)現(xiàn)過(guò)程是先創(chuàng)建一個(gè)MD5對(duì)象,然后將字符串轉(zhuǎn)成Unicode編碼的Byte數(shù)組,再通過(guò)ComputeHash_2方法進(jìn)行哈希計(jì)算,最后將Byte數(shù)組轉(zhuǎn)換為字符串。
//Java中使用MD5加密 public String MD5Encrypt(String str) { String result = ""; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.update(str.getBytes("UTF-8")); byte[] byteArr = md5.digest(); result = byteArrToHexString(byteArr); } catch (Exception e) { e.printStackTrace(); } return result; } //將Byte數(shù)組轉(zhuǎn)換為16進(jìn)制字符串 public String byteArrToHexString(byte[] byteArr) { StringBuilder sb = new StringBuilder(); for (byte b : byteArr) { String hex = Integer.toHexString(b & 0xFF); if (hex.length() == 1) { hex = "0" + hex; } sb.append(hex); } return sb.toString(); }
Java中的MD5加密實(shí)現(xiàn)過(guò)程和ASP類似,首先創(chuàng)建一個(gè)MD5對(duì)象,然后將原始字符串轉(zhuǎn)成UTF-8編碼的Byte數(shù)組,通過(guò)digest方法進(jìn)行哈希計(jì)算,最后將Byte數(shù)組轉(zhuǎn)換為16進(jìn)制字符串。