MD5在java中的應用
阿新 • • 發佈:2019-01-03
JDK內建了MD5的演算法,在java.security.*包中。應用的例子如下:
- package com.pn.bank.util;
- import java.security.NoSuchAlgorithmException;
- publicclass MD5Util {
- publicstatic String getMD5(String originalString) {
- // 把輸入字串轉換為二進位制字串
- byte[] byteSource = originalString.getBytes();
- // 結果字串
- String resultString = null;
- // 用於將位元組轉換成十六進位制表示的字元
- char hexDigits[] = {
- 'a', 'b', 'c', 'd', 'e', 'f' };
- try {
- java.security.MessageDigest md5 = java.security.MessageDigest
- .getInstance("MD5");
- md5.update(byteSource);
- // MD5 的計算結果是一個 128 位的長整數,用位元組表示就是 16 個位元組
- byte tmp[] = md5.digest();
- // 每個位元組用 16 進製表示的話,使用兩個字元,所以表示成 16 進位制需要 32 個字元
- char str[] = newchar[32];
- // 表示轉換結果中對應的字元位置
- int k = 0;
- // 從第一個位元組開始,對 MD5 的每一個位元組轉換成 16 進位制字元的轉換
- for (int i = 0; i < 16; i++) {
- // 取第i個位元組
- byte byteDigit = tmp[i];
- // 取位元組中高四位的數字轉換,>>>為邏輯右移,將符號位一起右移
- str[k++] = hexDigits[byteDigit >>> 4 & 0xf];
- // 取位元組中低四位的數字轉換
- str[k++] = hexDigits[byteDigit &
- }
- // 轉換後的結果轉換為字串
- resultString = new String(str);
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- return resultString;
- }
- }