目前据说MD5部分不安全.考虑到这一点,我想知道用于密码保护的机制.
这个问题,"双重哈希"密码是否比仅仅哈希一次更安全? 建议多次散列可能是一个好主意,而如何实现单个文件的密码保护?建议使用盐.
我正在使用PHP.我想要一个安全快速的密码加密系统.散列密码一百万次可能更安全,但也更慢.如何在速度和安全性之间取得良好的平衡?另外,我更喜欢结果具有恒定数量的字符.
另外,我应该在数据库中存储两个字段(例如,一个使用MD5,另一个使用SHA)?它会使它更安全或更不安全吗?
如果我不够清楚,我想知道使用哪种散列函数以及如何选择好的盐以便拥有安全和快速的密码保护机制.
相关问题并不完全涵盖我的问题:
PHP中的SHA和MD5有什么区别
简单密码加密
存储密钥的安全方法,asp.net的密码
如何在Tomcat 5.5中实现salted密码
你认为最安全,最安全的方法是什么?我把这些片段从php.net上删除了.我只是想知道,因为人们发布了他们自己,我只是无法理解为什么有些人是他们的方式......有人可以帮助我,并告诉我更多关于这些?哪个最安全,为什么?
1.
<?php
$hash = md5($salt1.$password.$salt2);
?>
Run Code Online (Sandbox Code Playgroud)
2.
<?php
function eliteEncrypt($string) {
// Create a salt
$salt = md5($string."%*4!#$;\.k~'(_@");
// Hash the string
$string = md5("$salt$string$salt");
return $string;
}
?>
Run Code Online (Sandbox Code Playgroud)
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);
?>
Run Code Online (Sandbox Code Playgroud)
4.
<?
function enchsetenev($toencode,$times)
{
$salt = 's+(_a*'; …Run Code Online (Sandbox Code Playgroud)