[英]What kind of hashing / encryption is this?
private String getString(byte[] bytes)
{
StringBuffer sb = new StringBuffer();
for (int i = 0; i < bytes.length; i++)
{
byte b = bytes[i];
sb.append(0xFF & b);
}
return sb.toString();
}
public String encrypt(String source)
{
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(source.getBytes());
return getString(bytes);
}
catch (Exception e)
{
e.printStackTrace(); }
return null;
}
如果我的 text = "test" The First Part toString()) 產生一個值 "Encryption$2@6966b26b" 然后第二部分得到這個值並產生一個值 "914310720570332111152022222781313839180246" 但是為什么不是 md31a5c5c54d7d7d7f7d7d7相似的東西?
函數“encrypt()”返回一個 MD5 哈希值。 您應該將其重命名為“散列”,因為散列!= 加密。 如果你想加密一個字符串,你可以看這里: https : //gist.github.com/bricef/2436364
我會說 MD5 哈希,因為代碼說MessageDigest.getInstance("MD5")
:D
它在代碼中明確說明你正在使用 MD5 哈希算法
現在你的問題是為什么:
但是為什么 md5 是一個數字而不是 31f521a06d5060d1f38159c74a1f7cf2 或類似的東西?
您的答案很簡單,請查看從字節數組生成字符串的代碼。
byte b = bytes[i];
sb.append(0xFF & b);
你取字節,即 0x20 然后你用整數 0x255 執行邏輯和運算,然后你添加結果的十進制表示你的 StringBuilder。 你想做的更像是
sb.append(Integer.toHexString(0xff&b));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.