实际上,出于测试和挑战的目的,我试图编写一个小密码加密系统。
我已经阅读了关于河豚算法的内容,我对它很感兴趣,在阅读the wikipedia page about it之后,我认为该算法应该是我想要的算法。但是php的crypt()函数完成了所有"脏工作"为了你。根据我在维基百科中读到的内容,Blowfish是一个对称的密钥密码,这意味着你可以使用相同的密钥对其进行加密并解密(如果我错了,请纠正我),所以我正在寻找一种方法, php,它允许你使用blowfish作为他最原始的形式:类似于:
blowfis($data, $key, $rounds);
我非常确定这样的图书馆存在,但经过一些谷歌搜索我没有找到任何人。这样的lib存在吗?或者我自己写这个功能,我确定,真的很复杂吗?
所以我的问题是:是否可以使用没有crypt()的河豚?如果是,怎么样?有特定的图书馆吗?或者使用原生的Php功能?
答案 0 :(得分:-3)
如果您的PHP版本为> = 5.5 ,请考虑使用 password_hash 和 password_verify 方法加密和验证密码。 password_hash也与crypt()
兼容。
试试这个:
$options = array(
'salt' => 'Your very secret static salt here',
'cost' => 12,
);
$pass = password_hash("passwordProvided", PASSWORD_BCRYPT, $options);
此时,$pass
变量保留了passwordProvided
的散列版本,看起来像是这样的:
$2y$10$WW91ciB2ZXJ5IHNlY3Jld.w58GyS1ueaPDQ.93.N2PWoiRvJ12GiK
验证密码;
$hashed = '$2y$10$WW91ciB2ZXJ5IHNlY3Jld.w58GyS1ueaPDQ.93.N2PWoiRvJ12GiK';
if(password_verify('passwordProvided', $hashed)) {
// Password is valid.
}
注意:将cost参数增加1,可以将计算哈希值所需的时间加倍。