gpt4 book ai didi

mysql - 如何正确使用 AES_ENCRYPT?

转载 作者:可可西里 更新时间:2023-11-01 07:20:53 24 4
gpt4 key购买 nike

我正在尝试对用户密码使用 AES 加密(MySQL 中的 AES_ENCRYPT),但我遇到了很多不同的问题。

这是我用来将新用户存储到数据库中的 SQL 查询:

INSERT INTO user VALUES (
'15',
'John',
'Doe',
'123 Fake St.',
AES_ENCRYPT('mypassword', 'mysalt'),
'mysalt'
)

在实际情况下,salt 是一个随机字符串。

它工作正常。我的意思是,我能够找回原始密码。在此示例中,AES_DECRYPT(user.password, 'mysalt') WHERE user.id = 15 检索 mypassword。但我可能忽略了一些事情。

  • 将盐和密码一起保存是否安全?除了 security through obscurity thing .

  • 存储散列密码的最佳格式是什么?我正在使用
    VARBINARY 但存储的字符串看起来像 8�p�����_�Z�\

  • 最后,密码应该多长,密码应该多长盐是什么?

谢谢

最佳答案

通常,没有实际需要反向加密密码。拥有这种能力本质上会降低系统的安全性。相反,使用不可逆的哈希函数。我建议生成字符串结果的 SHA-256(或更大):​​

 SHA2 (CONCAT (user.name, user.password, 'some salt', user.id), 256)

散装我也郁闷过rainbow tables通过在密码验证时始终知道的其他数据滚动来避免任何使用。

SHA2 需要 MySQL 5.5 或更高版本。如果您使用的是早期版本,SHA1() 几乎一样好,而且通常比 MD5AES 等好得多。

关于mysql - 如何正确使用 AES_ENCRYPT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9971532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com