MD5鹽值加密

2021-08-16 19:19:10 字數 1813 閱讀 1655

突然在網上發現,在md5的加解密站長工具中不是所有的md5加密值都是可以解密的,仔細看了一下,為了保證資料的更高的安全性,還有一種md5鹽值加密的方法。

1.普通md5加密

public class md5test1  catch (nosuchalgorithmexception e)  catch (exception e)   

char chararray = input.tochararray();

byte bytearray = new byte[chararray.length];

for (int i = 0; i < chararray.length; i++)

bytearray[i] = (byte) chararray[i];

byte md5bytes = md5.digest(bytearray);

stringbuffer hexvalue = new stringbuffer();

for (int i = 0; i < md5bytes.length; i++)

return hexvalue.tostring();

} public static void main(string args)

}

加密後生成的字串如下:

然後問題就來了,直接拿著這個32位的字串去站長工具上面去解密,秒解。。。細思極恐。。。看了很多的解釋,基本上是說md5進行的常規加密生成的字串儲存到相應的資料庫,結果你來調的時候別人直接拿現成的就可以了。

2.md5鹽值加密。

原理是通過生成隨機數與md5生成字串進行組合,這樣的隨機性和不確定性就算是再怎麼厲害的站長工具都解不開。

public class md5test2   

} string salt = sb.tostring();

password = md5hex(password + salt);

char cs = new char[48];

for (int i = 0; i < 48; i += 3)

return new string(cs);

} /**

* 獲取十六進製制字串形式的md5摘要

*/

private static string md5hex(string src) catch (exception e)

} public static boolean verify(string password, string md5)

string salt = new string(cs2);

return md5hex(password + salt).equals(new string(cs1));

} public static void main(string args)

}

執行main方法後的操作:

首先入眼一看就覺察到不同,總共生成了32+18共50位的字串,在**中定義了18位隨機數與md5加密字串的拼接,這個時候你再去站長工具,站長工具會告訴你我們解不開。。因為加入隨機數,代表了他的不確定性。可以這麼說,自己本機每次執行都會生成不同的加密字串,也就更好的保證了資料的安全。

其實加密的方式方法有很多種,還需要我們不斷的去學習。

鹽值加密 MD5

什麼叫鹽值加密 spring security怎樣進行鹽值加密 以前的md5原理是 密碼密文 md5演算法 密碼明文 這樣明文與密文其實還是一一對應的 那麼人家就可以用字典攻擊 就是乙個乙個的試 來探測密碼 加鹽 鹽值加密 的演算法很多 spring security用的是 密碼密文 md5演算法 ...

Shiro密碼的MD5加密 MD5鹽值加密

用md5加密演算法後,前台使用者輸入的字串如何使用md5加密,需要做的是將當前的realm 的credentialsmatcher屬性,替換為md5credentialsmatcher 由於md5credentialsmatcher已經過期了,推薦使用hashedcredentialsmatcher...

MD5加密工具類 帶鹽值

我們在使用md5加密時通常會通過加鹽的方式來提高安全性,下面的示例採用的是md5 隨機鹽值的方式 import org.apache.commons.lang.randomstringutils import org.springframework.util.digestutils md5加密工具類...