如何使用密碼和鹽以這種方式執行AES加密我可以在Java中使用相同的密碼和鹽進行解密。我需要這個,因爲我想在將數據放入數據庫之前對其進行加密,並且我不想將任何IV字節數組存儲在數據庫中進行解密。我只想使用密碼和salt store將數據加密到數據庫中的加密數據,以便在我需要數據時,從數據庫中獲取數據,並使用相同的密碼和鹽對數據進行解密,僅此而已。如何使用密碼和鹽以這種方式進行AES加密,以便在Java中僅使用相同的密碼和鹽進行解密
回答
AES是一種以16字節爲單位進行加密的分組密碼。如果使用相同的密鑰(或密碼+鹽)加密相同的16個字節的數據,則最終會得到相同的加密數據。這具有初始化向量用於解決的一些不希望的(不安全的)屬性。
如果你不想跟蹤的初始化向量,可以反而讓前16個字節數據是隨機的,然後用初始化向量設置爲16個零。這會產生同樣的效果。
我能想到的兩種可能性:
使用AES-CTR。計數器模式不需要IV。
從密碼和鹽中推導出您的密鑰和IV。喜歡的東西:
關鍵< - 哈希(密碼+鹽+ 「KEY」)
IV < - 你將現實生活中的散列(密碼+鹽+ 「IV」)
顯然使用標準的密鑰派生函數,取決於您需要多少安全。
您可能還想考慮驗證以檢查從數據庫返回的內容與您放置的內容相同。對於內置身份驗證,請使用AES-GCM而不是AES-CTR,否則,如果使用第二個選項,請添加HMAC。
請你告訴我如何使用AES- GCM或AES-CTR使用示例代碼,我是密碼學新手 – 2013-04-29 00:25:17
沒有初始化向量(或空白向量)的計數器模式非常糟糕,因爲兩個加密消息的異或=純文本的異或。這是因爲計數器模式通過加密iv +計數器然後用純文本進行異或操作。 – 2013-04-29 18:45:11
來自數據庫的唯一記錄ID將作爲CTR模式的隨機數。 – rossum 2013-05-01 08:54:02
- 1. AES加密Java到iOs - 使用密碼,iv和鹽
- 2. 鹽和密碼
- 3. 使用AES和長密鑰進行一次塊密碼解密
- 4. 我們在哪裏存儲密鑰/密碼/鹽進行加密?
- 5. 密碼鹽和祕密
- 6. 使用Java進行AES加密並使用Javascript進行解密
- 7. 用Jasypt和隨機鹽密碼加密和解密
- 8. PHP鹽加密/解密密碼
- 9. 使用鹽對密碼加密PHP
- 10. 使用DES和密碼進行加密
- 11. Asp.net密碼加密和解密用的鹽
- 12. 使用C#進行加密從這些PHP代碼中進行AES加密和解密
- 13. 使用簡單的替換密碼進行加密和解密
- 14. ASP.NET的密碼哈希和密碼鹽
- 15. 使用Java 1.5和ActionScript進行AES加密/解密as3crypto
- 16. 使用Java和PHP進行AES加密
- 17. 使用java和WP7進行AES加密
- 18. 在Cookies中使用AES進行加密和解密
- 19. 在Linux內核中使用AES進行加密和解密
- 20. 使用密鑰文件進行加密,使用密碼進行解密
- 21. 使用DirectCompute進行AES加密/解密的示例代碼
- 22. 如何在golang中使用rsa密鑰對進行AES加密和解密
- 23. AWS使用什麼密碼/密鑰進行AES-256加密?
- 24. 如何使用用戶密碼進行aes加密?
- 25. AES與鹽和靜態密碼
- 26. 使用C++進行加密和解密
- 27. Java使用AES和散列密碼作爲密鑰對圖像文件進行加密和解密
- 28. 如何使用SHA256和鹽進行加密?
- 29. 在Java中使用MD5和Salt進行密碼加密
- 30. Java使用預定義的128位密鑰進行AES加密和解密
每次加密和解密都可以使用全零的IV--它不會像使用獨特的IV那樣安全,但無論漂浮在船上 – 2013-04-26 18:49:15