PHP中的密码安全性
你会称哪种方法最安全最安全? 我将这些片段从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;
?>
如果您将第一个示例更改为:
<?php
$hash = hash('sha256', $salt1.$password.$salt2);
?>
这对于99%的应用程序来说足够安全。
唯一的问题是如何生成盐。 我推荐一个固定盐($ salt2)和每个用户生成的盐($ salt1),这个盐是按照密码存储在数据库中的。
这样,即使有人检索到数据库的内容,您也可以非常安全地抵御彩虹表攻击。
更好的选择是使用md5以外的东西,请在这里查看以前回答的与此相关的问题。
对此没有标准的好答案。 我所知道的是安全性和速度必须平衡。 你可以AES加密每一个信息,但这是可行的? 要回答你的问题,MD5(这是一种加密方式)加上SALT(一个非常随机的字符串)被认为是一个很好的安全标准。 它恰好是最快和最安全的。
如果你试图实现你自己的加密,那么它会是什么样的魔术,你缠绕导线的次数太多了,然而它却是用手掌拍打的。 所以除非你想对这个想法进行理论和论证,否则请去SALT + MD5。
链接地址: http://www.djcxy.com/p/51411.html下一篇: How to specify whether to take ownership of the marshalled string or not?