MD5全稱:message-digest algorithm 5
翻譯過來就是:資訊摘要演算法 5
文章目錄
- MD5的特點
- java實作MD5
MD5的特點
- 1、長度固定:不管多長的字串,加密后長度都是一樣長(16位或32位)
- 2、易計算:字串和檔案加密的程序是容易的.
- 3、細微性:你只要改變里面某個字符,那么都會導致MD5值改變
- 4、不可逆性:無法反向計算的原密碼
java實作MD5
package com.android02;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* message digest Algorithm 5(MD5) 資訊摘要演算法
* 可以產生出一個128位元(16位/32位元組)的散列值,用
* 于確保資訊傳輸完整一致
* 此演算法不可逆,
*
*/
public class MD5 {
/**
* 一遍生成的hash碼,很容易就被破解,所以多來幾遍
*/
public static String getMD5_50(String context){
for (int i = 0; i < 50; i++) {
context = getMD5(context);
}
return context;
}
public static String getMD5(String context){
try{
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(context.getBytes());
return getHashString(messageDigest);
}catch (NoSuchAlgorithmException e){
e.printStackTrace();
}
return null;
}
/**
* toHexString方法回傳一個無符號整數十六進制的字串
*/
private static String getHashString(MessageDigest messageDigest) {
StringBuffer builder = new StringBuffer();
for (byte b:messageDigest.digest()) {
// b(二進制) 右移四位 然后 與上 0xf (十六進制中的十五)
//若兩個二進制數長度不同,高位被拋掉(丟失)
//如 10000
// & 10 那么100將丟失
builder.append(Integer.toHexString(b>>4 & 0xf));
builder.append(Integer.toHexString(b & 0xf));
}
return builder.toString();
}
}
本文參考于:
MD5加密演算法原理及實作
Android教程
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/205522.html
標籤:其他
下一篇:老板該如何選著程式員幫我做開發?
