Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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 对于密码散列,这会被认为是荒谬的吗?_Php_Encryption_Hash_Md5_Sha1 - Fatal编程技术网

Php 对于密码散列,这会被认为是荒谬的吗?

Php 对于密码散列,这会被认为是荒谬的吗?,php,encryption,hash,md5,sha1,Php,Encryption,Hash,Md5,Sha1,这是我用来散列字符串的PHP代码示例。这种方法是否有额外的安全优势,或者根本不实用 <?php $string = "Pickles"; $salt_1 = "8w87wv87w43j78wv43jf4wv34zv3wv43twvv"; $salt_2 = "mnd9r4ng8rnf903ng8gm6ks9rhr74ner7fu4"; $salt_3 = "4hr84h4yeu3je8u3ir94j59ti5i59it5j5i9"; $layer_1 = sha1(md5(hash($sa

这是我用来散列字符串的PHP代码示例。这种方法是否有额外的安全优势,或者根本不实用

<?php
$string = "Pickles";
$salt_1 = "8w87wv87w43j78wv43jf4wv34zv3wv43twvv";
$salt_2 = "mnd9r4ng8rnf903ng8gm6ks9rhr74ner7fu4";
$salt_3 = "4hr84h4yeu3je8u3ir94j59ti5i59it5j5i9";
$layer_1 = sha1(md5(hash($salt_1.$string.$salt_3)));
$layer_2 = sha1(md5(hash($salt_2.$layer_1.$salt_1)));
$layer_3 = sha1(md5(hash($salt_3.$layer_2.$salt_2)));
$final_result = $layer_3;
echo $final_result;
?>


有什么想法或建议吗?

MD5和SHA1是单向散列。您是否打算解密这些消息以便以后阅读?如果不是,这不是加密。它只是获取一个字符串的散列值,该字符串已经用salt密钥加密了三次。以下是一些关于发明自己的加密算法的合理建议:


每次进行哈希运算时,实际上都会增加使用CPU资源的可能性,而不会增加安全性。我不能告诉你你的方法是否合适,因为我不是数学家

然而,我可以说,您并不真正了解密码哈希在实践中是如何工作的

反复对字符串进行哈希运算并不一定会使其更加“安全”。按照最佳实践(使用
crypt()
和河豚)正确操作,您就会没事了。走你自己的“最佳”道路,你很可能会被烧伤。。。不知怎么的


依赖最佳实践是有原因的。除非有天才参与(不,是真正的天才),“改进”它是没有好处的,你必须理解它,才能真正改进它。

不,这不是过火,而是严重的附带伤害

你有几种“盐”。多吃盐没用,但无害。然而,你的“盐”似乎是常数——这是非常有害的。每个哈希密码的salt必须是唯一的;否则,它不是salt,也不是salt的工作,salt的工作是防止攻击者并行攻击多个密码(“并行性”将在时间和空间上同时进行;一个大的预计算哈希表是时间并行性)

此外,调用6个哈希函数(或者9个,具体取决于
hash()
函数的含义)。那太少了。100000次调用将更接近一个合适的计数。多次调用意味着使密码处理变慢——对“尝试”密码的攻击者来说变慢,也就是说(不幸的是,这也使您的服务器变慢,因此您不能随意增加迭代次数)


有关详细信息,请参阅。然后。和使用(在PHP中有bcrypt的免费开源实现)。

密码加密!=密码散列。它不是那么安全,密码是“Pickles”