1. 程式人生 > >記一次加密算法MD5

記一次加密算法MD5

進行 字節 md5 PE .get 就是 bsp 加密 sta

通過MessageDigest可以獲取到16個字節數組:

MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] digest = md5.digest(str);

接著遍歷字節數組,將每個字節進行16進制轉換


char hex[] = { ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘,
‘9‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘ };
for (int x = 0; x < digest.length; x++) {
    sbr.append(hex[
digest[x] >> 4 & 0x0f]) // 取高4位的10進制值 (代表16進制)
      .append(hex[digest[x] & 0x0f); // 取低4位
}

如:byte i = 44;

轉2進制是 0010 1100

0010 1100 >> 4 = 0010 // 取高4位
那麽 0000 0010 & 0000 1111 = 0000 0010 // 轉16進制 - 2

0010 1100 & 0000 1111 = 0000 1100 // 直接 & 就是低4位的,因為0xf的高4位是0,那麽相 & 得到的結果也是 0。 最後轉16進制 - c (10進制表示數字12)

最後,結果就是 0x2c

記一次加密算法MD5