fed*_*o-t 4 mysql security aes collation
我正在尝试使用AES加密(MySQL中的AES_ENCRYPT)来获取用户密码,但我想出了一堆不同的问题.
这是我用于将新用户存储到数据库中的SQL查询:
INSERT INTO user VALUES (
'15',
'John',
'Doe',
'123 Fake St.',
AES_ENCRYPT('mypassword', 'mysalt'),
'mysalt'
)
Run Code Online (Sandbox Code Playgroud)
盐在实际情况下是随机字符串.
它工作正常.我的意思是,我能够检索原始密码.在此示例中,AES_DECRYPT(user.password, 'mysalt') WHERE user.id = 15检索mypassword.但我可能会忽略一些事情.
保存盐和密码是否安全?除了安全通过默默无闻的事情.
存储哈希密码的最佳格式是什么?我正在使用
VARBINARY,但存储的字符串看起来像8?p?????_?Z?\.
最后,密码需要多长时间,盐应该多长时间?
谢谢
通常,实际上不需要反向加密密码.具有该能力固有地降低了系统的安全性.相反,使用不可逆的哈希函数.我建议SHA-256(或更大)产生一个字符串结果:
SHA2 (CONCAT (user.name, user.password, 'some salt', user.id), 256)
Run Code Online (Sandbox Code Playgroud)
我还通过在密码验证时始终知道的其他数据滚动来挫败批量彩虹表.
SHA2需要MySQL 5.5或更高版本.如果您使用的是较早的版本,SHA1()几乎一样好,而且比一般更好MD5,AES等等.
| 归档时间: |
|
| 查看次数: |
12314 次 |
| 最近记录: |