gpt4 book ai didi

php - PHP 中的密码安全

转载 作者:可可西里 更新时间:2023-11-01 12:57:10 24 4
gpt4 key购买 nike

您认为哪种方法最安全可靠?我从 php.net 中删除了这些片段。我只是想知道,因为人们张贴了他们自己的,我只是无法理解为什么有些人是这样的......有人可以帮助我并告诉我更多关于这些的信息吗?哪个最安全,为什么?

1.

<?php
$hash = md5($salt1.$password.$salt2);
?>

2.

<?php
function eliteEncrypt($string) {
// Create a salt
$salt = md5($string."%*4!#$;\.k~'(_@");

// Hash the string
$string = md5("$salt$string$salt");

return $string;
}
?>

3.

<?php
define ('SALT_ONE', 'some_random_123_collection_&$^%_of_stuff');
define ('SALT_TWO', 'another_random_%*!_collection_ANbu_of_stuff');

$password = 'dragon';

function generate_encrypted_password($str) {
$new_pword = '';

if( defined('SALT_ONE') ):
$new_pword .= md5(SALT_ONE);
endif;

$new_pword .= md5($str);

if( defined('SALT_TWO') ):
$new_pword .= md5(SALT_TWO);
endif;

return substr($new_pword, strlen($str), 40);
}

echo generate_encrypted_password($password);
?>

4.

<?
function enchsetenev($toencode,$times)
{
$salt = 's+(_a*';
for($zo=0;$zo<$times;$zo=$zo+1)
{
$toencode = hash('sha512',salt.$toencode);
$toencode = md5($toencode.$salt);
}
return $toencode;
}

?>

5.

<?php
$hash = $password . $salt;

for ( $i = 0; $i < 10000; $i++ ) {
$hash = md5( $hash );
}

echo $hash;
?>

最佳答案

  1. 这是我们想要的基本示例,在密码中加盐
  2. 这是同一个例子,但有盐生成部分。
  3. 一种不同的加盐方法,但仍然相当
  4. 这个过于复杂的示例绝对没有意义,多次使用两种不同的散列方法进行散列绝对不会提高安全性。
  5. 如前所述,执行 10000 次哈希绝对没有意义。

如果将第一个示例更改为:

<?php
$hash = hash('sha256', $salt1.$password.$salt2);
?>

这对于 99% 的应用程序来说足够安全。

唯一的问题是如何生成盐。我推荐一个固定的盐($salt2)和为每个用户生成的盐($salt1),它与密码一起存储在数据库中。

通过这种方式,即使有人检索了您的数据库内容,您也可以非常安全地抵御彩虹表攻击。

关于php - PHP 中的密码安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5235058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com