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;
}
如果我的文字=「測試」 第一部分的toString())生產的「加密$ -2 @ 6966b26b」 的值,而第二部分則獲取和產生的「91431072057033211115202222781313839180246」 值,但爲什麼md5的數字而不是31f521a06d5060d1f38159c74a1f7cf2或類似的東西?這是什麼樣的散列/加密?
它字面意思是MD5代碼... –
的數字呈現,是因爲你得到的字節數回。如果你想以十六進制表示,像31f521a06d5060d1f38159c74a1f7cf2你需要將你的字節轉換爲16基地。所以介於00-ff之間的值。 –