我有一段信息是使用aes-256-cbc加密編碼的。我應該如何將它存儲在數據庫中?目前我正在使用VARCHAR(255)utf8_bin。這是好的,還是應該使用其他字段類型,如VARBINARY(255)?在這種情況下是否有可能使用VARCHAR丟失一些數據?謝謝。如何在AES數據庫中存儲AES加密密碼
回答
的存儲加密的(相對於散列)儘管在一個數據庫密碼可能的(上)是否適當,AES密文是二進制數據,因此should be stored as such,即在一個BINARY
/VARBINARY
柱或BLOB
。
也可以對密文進行編碼,例如,作爲base64,然後將其存儲在文本(即CHAR
/VARCHAR
/TEXT
)列中。這不太節省空間,但它可能有時更方便,例如,當直觀地檢查數據或在可能無法處理包含任意二進制數據的字段的程序之間傳遞數據時。
我想了解將這些數據存儲爲UTF8文本的後果是什麼。 varchar - >文本字符串; varbinary - >二進制字符串。爲什麼我不應該把它保留爲UTF8文本,如果它是一個字符串呢。 –
AES密文可以包含無效的UTF-8字節序列,所以我不會試圖將其視爲這樣。我沒有測試過是否會發生任何數據損壞*,但不能保證它*不會*。考慮到有一個更合適的工具('VARBINARY')可用,使用''latin1'' *這樣的單字節字符集'VARCHAR'可能會更安全,但我不會使用它。 –
- 1. AES加密 - 在Android上存儲密碼
- 2. 如何在Android中的SQLite數據庫中存儲AES密碼?
- 3. 密碼加密/數據庫層AES或應用層AES
- 4. AES密碼加密
- 5. 存儲AES密鑰
- 6. AES加密和密鑰存儲?
- 7. 何處存儲AES密鑰?
- 8. 解密AES中的AES加密字段
- 9. 如何在C++中安全地存儲AES加密密鑰?
- 10. AES加密/解密
- 11. 加密AES密鑰?
- 12. AES密鑰,加密
- 13. C#加密數據AES
- 14. 使用AES加密數據
- 15. CryptoJS AES加密和Java AES解密
- 16. 安全存儲AES密鑰
- 17. AES加密/解密中J2ME
- 18. OpenSSL密鑰在aes加密?
- 19. AES在C加密解密
- 20. 在PHP中使用AES加密時,應該在哪裏存儲密碼密鑰?
- 21. 使用AES來存儲密碼
- 22. varbinary或varchar保存AES加密數據
- 23. AES加密和解密數據
- 24. AES加密和解密數據丟失
- 25. AES Java加密
- 26. AES加密quellcode
- 27. AES加密,SHA256
- 28. AES加密badPadding
- 29. python AES加密
- 30. 加密(AES)
你不應該加密你的用戶密碼。你需要使用散列,而不是一些強大的PBKDF2,bcrypt和scrypt。由於散列函數是單向函數,因此您將無法「解密」散列。爲了驗證您的用戶,您可以再次通過散列函數運行密碼,以便與存儲在數據庫中的散列進行比較。查看更多:[如何安全地哈希密碼?](http://security.stackexchange.com/q/211/45523) –
這是不可能強調這一點:**不要存儲密碼**。 – xxbbcc
我從來沒有說過我正在加密用戶的帳戶密碼。這只是一些敏感數據,不需要以純文本格式存儲。很高興爲我們的用戶提供功能。 –