我知道这个问题已被多次询问,但实际上到现在为止我找不到合适的问题所以请帮助。 我想通过用c#编写的脚本在moodle的数据库中插入新用户。我想要做的是从该脚本向该用户插入用户名和密码。所以我需要插入哈希密码。我所有的哈希密码都以“$ 2y $ 10 $”开头。在c#中,我尝试了几种方法,并没有给我相同的密码。对于前者我试过了:
string cryptedPassword = Crypter.Blowfish.Crypt(password);
它给了我
$ 2A和; 06&安培; bQuFKC8fVPYQsGbQj3sL7uoZByn7tRc4enxBeiN2k1wu5iyubTIyi
虽然预期的是
$ 2Y $ 10 $ SNUjOqCuwKodg0E126mHUO2NzMBnIHZl / FD / Q2wEv4hg.y5y2j4VC
。 以下是真实的,所以crypter可以像moodle脚本一样使用哈希密码来填充我的密码:
bool matches = Crypter.CheckPassword(password, "$2y$10$SNUjOqCuwKodg0E126mHUO2NzMBnIHZl/fD/Q2wEv4hg.y5y2j4VC");
如何在'Crypter.Blowfish'中指定hash-algorithm = 2y = BCrypt和cost-factor = 10 = 2 ^ 10次迭代,以获得与预期相同的哈希密码? 任何帮助表示赞赏。 提前致谢
答案 0 :(得分:2)
函数Crypter.Blowfish.Crypt
设置第二个参数Salt,尝试设置它,因为当你没有为每次运行设置Salt参数模块时使用随机盐
试试这个
string cryptedPassword = Crypter.Blowfish.Crypt(password,"some_SALT");
答案 1 :(得分:0)
只是为了回答而不是作为评论(更具可读性):
as @ y.h评论说:
string result = Crypter.Blowfish.Crypt(cadena,
new CrypterOptions()
{
{ CrypterOption.Variant, BlowfishCrypterVariant.Corrected },
{ CrypterOption.Rounds, 6 }
});
这会产生类似的东西:
$ $ 2Y 06 $ xkdTy5YwKmMCDP6vQGC5A.YgZkKxv17xQQfMyIUNfNWazd4pqqibK
哪个是有效的2y版本(加上圆形因子6)
干杯!