嘿,我想对此有所了解
我用这个来为我的每个用户注册时产生独特的盐(随机字母和数字).盐会崩溃的可能性有多大?
uniqid(mt_rand());
Run Code Online (Sandbox Code Playgroud)
然后,我使用md5将salt,密码和电子邮件(按此顺序)一起作为密码进行哈希,并在登录时重新进行重新哈希.
md5($salt . $password . $email);
Run Code Online (Sandbox Code Playgroud)
这比md5更安全多少钱?我可以改进的东西?
CREATE TABLE IF NOT EXISTS `users` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(24) CHARACTER SET utf8 NOT NULL,
`password` varchar(32) CHARACTER SET utf8 NOT NULL,
`email` varchar(255) CHARACTER SET utf8 NOT NULL,
`salt` varchar(255) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)
Ale*_*ort 13
它们是否发生碰撞并不重要.盐的目的是,如果你将相同的值散列两次但使用不同的盐,结果会有所不同.如果攻击者获取哈希数据库,则盐将使用预先计算的已知密码哈希值数据库进行无效攻击.盐本身并不是秘密,盐的碰撞不是问题.
归档时间: |
|
查看次数: |
370 次 |
最近记录: |