Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
密码和散列的PHP AES加密_Php_Database_Security_Encryption - Fatal编程技术网

密码和散列的PHP AES加密

密码和散列的PHP AES加密,php,database,security,encryption,Php,Database,Security,Encryption,今天我读到了AES(A高级EncryptionS标准),我问自己一些我自己不知道的问题 我在维基百科上读到AES即使用于绝密文件也是安全的,直到现在,还没有人找到破解它的方法。确实有一些尝试使用旁侧香奈儿攻击,但由于它没有攻击加密本身,所以没有那么成功 根据我所读到的内容,我想知道,我应该使用AES加密数据库中的密码吗?我可以保存加密的密码,或者更确切地说,使用hash()函数对数据库中字符串的AES加密进行加密,以某种方式为其提供“双层”保护。我可能完全错了,我只是想知道,在数据库中存储加密字

今天我读到了AES(A高级EncryptionS标准),我问自己一些我自己不知道的问题

我在维基百科上读到AES即使用于绝密文件也是安全的,直到现在,还没有人找到破解它的方法。确实有一些尝试使用旁侧香奈儿攻击,但由于它没有攻击加密本身,所以没有那么成功

根据我所读到的内容,我想知道,我应该使用AES加密数据库中的密码吗?我可以保存加密的密码,或者更确切地说,使用
hash()
函数对数据库中字符串的AES加密进行加密,以某种方式为其提供“双层”保护。我可能完全错了,我只是想知道,在数据库中存储加密字符串时,它不那么常见的原因是什么。我猜这是因为有一种解密方法,但是,要解密它,你必须知道用于加密它的代码有多少圈

提前谢谢

我应该使用AES加密数据库中的密码吗

存储加密密码(而不是散列值)的问题在于加密是可逆的。实际上需要存储密码而不是简单地使用一种机制对用户进行身份验证是非常罕见的。加密(可逆)密码是不推荐的,您应该有充分的理由忽略这种做法

我可以保存加密的密码,或者使用hash()函数 加密数据库中字符串的AES加密 不知何故,这是一种“双层”保护

很难说你在问什么,但我想你是在问加密散列值是否会让你的系统更安全

答案是肯定的,只要您将加密的密钥安全地存储在散列之外。然而,这只会增加隔离所提供的保护。是否值得让应用程序复杂化,特别是考虑到使用合适的散列算法进行salt和hash处理的值应该足够好


我觉得,如果加密哈希值,这将是标准做法,而事实并非如此。

为什么不存储密码的盐哈希呢?您首先检索密码的可能目的是什么?如果用户忘记了密码,只需让他们重新设置即可。当可逆加密而不是盐渍单向散列用于密码存储时。不要加密密码,因为加密是安全的reversible@kfirba那是没有用的。散列实际上是通过存储一个salt+散列值,然后当用户输入密码时,对输入值进行salt+散列,并将其与数据库中的值进行比较。密码的原始内容实际上已丢失。在散列之后对其进行加密不会得到任何好处,因为弱点仍然是服务器安全性,它必须以某种方式持有或访问AES加密密钥。暴露哈希密码表的代码缺陷或服务器漏洞也可能暴露解密哈希所需的密钥。“没有收获!”路易斯,一般来说,你只是把盐放在肉饼旁边。盐不是秘密,它只是随机的。为了补充你的答案,提供“双层”保护的更好方法是使用随机盐。是的,盐的唯一要求是它是随机的。使用随机的长盐,并使用慢散列算法(即,多轮散列)。这两个要求的要点是,如果盐和散列密码遭到破坏,则暴力破解密码或生成彩虹表将耗费大量的时间和资源。例如,见: