【发布时间】:2013-12-18 17:40:24
【问题描述】:
今天我读到了 AES(A 高级 E ncryption S 标准),我问自己一些我不知道的问题有知识自己回答。
我在 Wikipedia 中读到,即使是绝密文件,AES 也可以安全使用,直到现在,没有人找到破解它的方法。确实有一些尝试使用侧信道攻击,但它并没有那么顺利,因为它没有攻击加密本身。
根据我所读到的内容,我想知道,我应该使用 AES 来加密我的数据库中的密码吗?我可以保存加密的密码,或者更确切地说使用hash() 函数来加密数据库中字符串的 AES 加密,从而以某种方式为其提供“双层”保护。我在这里可能完全错了,我只是想知道在数据库中存储加密字符串时它不常见的原因是什么。我想那是因为有一种解密方法,但是要解密它,您仍然必须知道代码用于加密它的轮数。
提前致谢!
【问题讨论】:
-
为什么不只存储密码的加盐哈希?首先,您必须能够检索密码的可能目的是什么?如果用户忘记了密码,只需让他们重新设置即可。
-
This is what can go wrong 当可逆加密而不是加盐单向哈希用于密码存储时。
-
不要加密密码,正是因为加密是可逆的
-
@kfirba 那没用。散列在实践中通过存储加盐+散列值然后当用户输入密码时,加盐+散列输入值并将其与数据库中的值进行比较来工作。密码的原始内容实际上已丢失。在散列后加密它不会获得任何东西,因为弱点仍然是您的服务器安全性,它必须以某种方式保存或访问 AES 加密密钥。暴露散列密码表的代码缺陷或服务器漏洞也可能暴露解密散列所需的密钥。那里没有收获。
-
@Louis,通常,您只需将盐存储在哈希旁边。盐不是秘密,它只是随机的。
标签: php database security encryption