java.security.MessageDigest類用於爲應用程序提供信息摘要算法的功能,即生成散列碼,通過數據
中單向的哈希函數,接收任意長度的數據生成固定長度的哈希值,MD5就是其中的一種加密算法
一、MD5簡介
任何數據經過MD5加密後值是唯一的,因此可以用來作爲數據的唯一標識
MD5特點:
壓縮性:任意長度的數據都會被經過MD5加密後都是長度固定
抗修改性:對源數據有任何改動,最後得到的MD5值都會有很大的區別
強抗碰撞:已知原數據及其MD5值,那麼再找一個具有相同MD5值的數據(僞造數據)是很難的
二、使用
1.通過MessageDigest類得到加密器
2.把要加密的數據流傳入加密器
3.調用.digest方法,返回MD5值(32位字符)
下面看一個例子
<span style="white-space:pre"> </span>//得到加密器
MessageDigest digest = MessageDigest.getInstance("MD5");
//把文件轉換爲流
FileInputStream fis = new FileInputStream(file);
int len =0;
byte[] buffer = new byte[1024];
while((len=fis.read(buffer))!=-1){
//加密器讀取流文件
digest.update(buffer, 0, len);
}
//返回字節數組
byte[] result = digest.digest();
StringBuilder sb = new StringBuilder();
for(byte b:result){
int number = b&0xff;
String str = Integer.toHexString(number);
if(str.length()==1){
sb.append("0");
}
sb.append(str);
}
System.out.println(sb.toString());
通過對自己數組遍歷,轉換爲十六進制,最後拼接爲字符串
三、應用
1.對apk的加密,利用MD5加密後的唯一性可以用來查找用戶手機上一些非法和惡意的軟件
2.讓大容量信息在數字簽名軟件簽署私人密鑰前被壓縮成一種保密格式
3.用戶密碼的保護,把明文密碼加密後可以有效防止用戶密碼被盜的危險