以下代码创建MD5哈希,然后使用SHA-1再次哈希 - 这是否安全?
$user = $_POST['username'];
$username = mysqli_real_escape_string($mysqli, $user);
$pass = md5($_POST['password']);
$password = sha1($pass);
这会增加碰撞的可能性吗? 有没有其他方法可以哈希并且处理密码的速度非常快?
答案 0 :(得分:2)
单次散列没有实际优势。
请注意,MD5现在被视为已损坏,因为它很容易受到许多实际攻击,并且不建议使用SHA1等算法进行密码散列。
有专门为密码散列设计的算法,例如PBKDF2。您应该使用PBKDF2作为哈希 - 请参阅this question on security.stackexchange.com.。
答案 1 :(得分:0)
使用sha2 https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html#function_sha2
mysql> SELECT SHA2('abc', 224);
可以认为SHA2()在加密方面比MD5()或更安全 SHA1()。
在MySQL 5.5.5中添加了SHA2()。