PHP和MySQL安全性:单向加密与双向加密

lau*_*kok 4 php mysql security aes

我读过有关使用MySQL AES_ENCRYPT/AES_DECRYPT(双向加密)的安全性低于使用PHP - hash()(单向加密).

http://bytes.com/topic/php/answers/831748-how-use-aes_encrypt-aes_decrypt

确实更安全的是"不是向用户发送他的密码,而是向他发送一个他可以点击以重置密码的链接."?

最重要的是,如果我使用MySQL AES_ENCRYPT/AES_DECRYPT(我非常热衷于......),我该如何定义MySQL可以接受的密钥?例如,关键的长度重要吗?或者我可以简单地使用'123123 @ 123123'作为我的钥匙?

谢谢!

Nul*_*ion 7

两种概念(散列和加密)之间存在根本区别:
加密可以颠倒,哈希不能(至少这是个想法).

如果恶意用户获得对数据库中密码的访问权并且知道用于加密密码的密钥,则他们将能够恢复所述密码.如果他们被散列,他们将无法做到这一点.

这就是为什么密码应该始终被哈希(和盐渍),从不加密.

例如,关键的长度重要吗?或者我可以简单地使用'123123 @ 123123'作为我的钥匙?

AFAIK MySQL AES_ENCRYPT可以获取任意长度的键; 但显然更短的密钥会让攻击者更容易暴力破解(即:尝试所有可能的组合)