mik*_*ikl 7 php hash cryptography ssha
我正在为邮件服务器开发一个Web管理模块(如果你想看一下,它是开源的).
为此,我需要能够生成Dovecot可读的散列密码.如他们的wiki所述,他们推荐的密码哈希方案是SSHA256(额外的S用于盐渍).
它还解释说,使用类似PHP代码的方法实现这一点可能相当简单:
$salt = 'generate_a_salt_somehow';
$hash = hash('sha256', $password . $salt);
Run Code Online (Sandbox Code Playgroud)
然而,从我所读到的关于密码学的内容来看,这是一种生成盐渍哈希的相当天真的方法,但是如果你在源代码中输入AES时做错了,我认为在这种情况下也是如此.
因此,如果你对密码学有所了解,我很想知道最安全的方法,无论是mcrypt,mhash还是其他什么.
您链接的Dovecot维基页面解释了Dovecot使用的确切哈希格式.你在这个问题上没有任何选择--Dovecot对哈希的外观有所期待,所以你必须遵守它的规则:
对于大多数盐渍密码方案(SMD5,SSHA*),盐在密码哈希之后存储,其长度可以变化.在对密码进行散列处理时,请在明文密码后附加盐,例如:SSHA256(pass,salt)= SHA256(pass + salt)+ salt.
因此PHP中适当的密码生成功能可能如下所示:
$hash = "{SSHA256}" . base64_encode(hash('sha256', $password . $salt) . $salt);
Run Code Online (Sandbox Code Playgroud)
小智 7
PHP中的密码生成功能:
$hash = "{SSHA256}".base64_encode(hash('sha256', $password.$salt, true).$salt);
Run Code Online (Sandbox Code Playgroud)
必然"真实" - 第三个参数......
| 归档时间: |
|
| 查看次数: |
10605 次 |
| 最近记录: |