我有一段信息是使用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
我从来没有说过我正在加密用户的帐户密码。这只是一些敏感数据,不需要以纯文本格式存储。很高兴为我们的用户提供功能。 –