Php 使用不带crypt()的Blowfish密码

Php 使用不带crypt()的Blowfish密码,php,encryption,blowfish,Php,Encryption,Blowfish,实际上,出于测试和挑战的目的,我正在尝试编写一个小的密码加密系统 我读过关于河豚算法的书,我对它很感兴趣,读过之后,我认为这个算法应该是我想要的。但是php的crypt()函数为您完成了所有“肮脏的工作”。从我在维基百科上读到的内容来看,Blowfish是一种符号密钥密码,这意味着您可以使用相同的密钥对其进行加密和解密(如果我错了,请纠正我),因此我正在寻找一种方法,在php中,允许您使用Blowfish作为其最原始的形式:类似于: blowfis($data, $key, $rounds);

实际上,出于测试和挑战的目的,我正在尝试编写一个小的密码加密系统

我读过关于河豚算法的书,我对它很感兴趣,读过之后,我认为这个算法应该是我想要的。但是php的crypt()函数为您完成了所有“肮脏的工作”。从我在维基百科上读到的内容来看,Blowfish是一种符号密钥密码,这意味着您可以使用相同的密钥对其进行加密和解密(如果我错了,请纠正我),因此我正在寻找一种方法,在php中,允许您使用Blowfish作为其最原始的形式:类似于:

blowfis($data, $key, $rounds);
我很确定那个样的图书馆是存在的,但在谷歌搜索之后,我并没有找到任何人。那么,是否存在这样一个lib?或者我必须自己写这个函数,我敢肯定,这真的很复杂


所以我的问题是:不使用crypt()是否可以使用河豚?如果是,怎么做?使用特定的库?或者使用本地PHP函数?< /p> 如果您的PHP版本是>=强> 5.5 < /强>请考虑使用<强> < /强>和<强> <强>方法来加密和验证密码。此外,密码\u散列与
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,计算哈希值所需的时间将增加一倍。

那么,您是在要求非现场库吗?如果没有。你是怎么做到的?哪里出了问题。像这样的问题通常会吸引反对票和结束投票votes@DarylGill我在问这是否可能。如果是,怎么做?我在谷歌上搜索了很多次,没有发现在没有php的crypt()的情况下使用河豚。但我很惊讶,没有办法。我在问是否有人知道去那里的路。在非现场库或本机Php函数中。尽管“
crypt
”和“encryption”共享同一音节。所以请不要这样称呼它。我本来打算写一个关于单独使用河豚的答案。这个在Stack上找到的答案和我想的一样解释了这个问题。这根本不是问题所在。