回答
絕對不能使用Adler32進行密碼散列。
對於短輸入,可以從8位CRC獲得大量信息。通常,對於密碼散列,輸入數據中的一位變化將會改變50%的輸出位。
它不是爲了避免碰撞而設計的,它是一個CRC。許多散列函數被設計用於碰撞不是問題的其他目的,例如字典查找或「瓶子俱樂部」中的存儲箱,它只使用會員編號的最後幾位數字來實現瓶子在存儲箱中的分佈有點均勻。
密碼安全:
只使用一個哈希函數是不夠的,僅僅加入鹽無助於提高安全性。取而代之的是用隨機鹽在HMAC上進行大約100ms的持續時間,然後用散列表保存鹽。使用PBKDF2,password_hash,Bcrypt等功能。關鍵是要讓攻擊者花費大量時間通過強力查找密碼。
爲什麼SHA-512鹽不夠用的一個原因是筆記本電腦(我的)每秒可以執行750,000次,這將應用於按使用頻率排序的10,000,000個密碼的列表然後有特殊程序即模糊那些。除非是釣魚,否則攻擊者可能會對90%的密碼破解感到滿意。所以通過將計算機時間從< 2us延長到> 100ms,攻擊者需要5萬倍的時間,他可能會移動到下一個站點。
保護您的用戶非常重要,請使用安全的密碼方式。
這就是爲什麼:攻擊者擊中你的站點,獲取MD5密碼,用普通密碼列表蠻力並擁有用戶的用戶名和密碼。現在,攻擊者在另一個站點上使用此功能,因爲大多數用戶都重複使用密碼,所以可以訪問更敏感的數據。您剛剛幫助妥協了用戶。注:一個體面的黑客率可能是10億/秒。攻擊者會喜歡你的網站,你甚至不知道它被成功攻擊。
謝謝你的回答,當然,我會用最好的當前方法。我只是好奇而已。 –
一個不「解密」一個散列,而一個散列並不隱藏「真正的文本」 - 加密,而不是散列,這樣做。但是,如果你的意思是,Adler-32可以用作加密散列嗎?那麼絕對不行。對密碼哈希的要求是,對於可預見的硬件和數學來說,使用給定的哈希來構造消息是非常困難的,實際上是不可能的。對於Adler-32來說這很容易,而且實際上對於32位散列來說很容易。 32位是不夠的。
因此,您可以通過嘗試輕鬆獲得相同的散列,並且無法看到明文,因爲它不包含它。我得到正確嗎? –
沒有明文。沒有加密。對於這個討論,所有的都有一個消息和它的散列。信息可以用簡單的英文。 「加密」哈希被設計爲使得構建具有完全相同哈希的另一消息,任何其他消息是不可行的。 –
- 1. 爲什麼是adler32(0xFFFFFFFF,「」)= 0xE000E?
- 2. 爲什麼解密的密鑰與加密密鑰不一樣?
- 3. 解密時爲什麼會出現'BadPaddingException'?
- 4. phpseclib Crypt_RSA:爲什麼公鑰用於解密?
- 5. 爲什麼'這'不易變?
- 6. 爲什麼不同的密鑰也可以解密JCE加密
- 7. 爲什麼不在NSUserDefaults中存儲密碼顯而易見?
- 8. 什麼時候解密?
- 9. 沒有什麼解密加密後我
- 10. nodejs加密解密有什麼問題?
- 11. CryptoStream:爲什麼CryptoStreamMode.Write加密和CryptoStreamMode.Read解密?
- 12. 爲什麼AES解密比AES加密少一輪?
- 13. 爲什麼AES加密比解密要快
- 14. 加密,解密,散列稱爲什麼類?
- 15. 爲什麼MD5/SHA1密碼哈希無法解密?
- 16. Blowfish C++沒有正確加密/解密..爲什麼..?
- 17. 爲什麼Javascript是「最容易被誤解的語言」?
- 18. 什麼是用於Perl的最好的密碼加密和解密庫?
- 19. 爲什麼Laravel4.2加密密鑰少於CodeIgniter中的加密密鑰字符?
- 20. 「易」代表什麼?
- 21. Adler32校驗生成 - 爲什麼位和右移運算符被用來
- 22. 爲什麼我的滾動adler32校驗和不起作用? (模算術)
- 23. 爲什麼unmarshalling json比xml更容易
- 24. 爲什麼MongoDB沒有交易?
- 25. 爲什麼Java中需要易失性
- 26. 爲什麼在android中lockStatic易失性?
- 27. 爲什麼Spring不攔截交易?
- 28. 爲什麼不隔離這個交易?
- 29. 爲什麼RSA加密和解密的時間取決於密鑰大小而不是輸入長度?
- 30. 爲什麼AES解密方法將IV作爲參數
魔法哈希 - > https://www.whitehatsec.com/blog/magic-hashes/ – DejaVuSansMono
更大的問題,爲什麼要使用Adler32而不是SHA2或SHA3家族成員(如SHA-256),並只需要儘可能多/少數需要的位。 Adler-32是一種校驗和算法,可以爲速度交易可靠性。但是在今天的計算機上SHA-256通常很快。在我的筆記本電腦上,我可以在3 mSec的1MB數據上運行SHA-256。 – zaph
@zaph我只是好奇爲什麼adler32不可靠。它是否可逆? –