【发布时间】:2015-12-07 04:12:27
【问题描述】:
在我的网站上有一个页面,客户可以在其中存储用于他们购买的应用程序的密码(为了方便起见,通常所有应用程序都使用一个密码)。使用 PHP 代码使用 bcrypt 对密码进行哈希处理:
if ( $app_pass != '' ){
$mysalt= mcrypt_create_iv(22, MCRYPT_DEV_URANDOM);
$options = [ 'cost' => 10, 'salt' => $mysalt,];
$app_pass = password_hash( $app_pass, PASSWORD_BCRYPT, $options );
}
-
if语句中的$app_pass是纯文本 - 后来变成bcrypted hash
- 然后将该哈希值存储在 MySQL 数据库中
当客户在他的 PC 上开始购买应用程序,输入登录名和密码,应用程序连接到 MySQL 数据库,检索 hashFromDb 并尝试使用BCryptHelper 类验证输入的密码:
BCryptHelper.CheckPassword(passwordbox.Password, hashFromDb)
但它返回错误代码:
在 DevOne.Security.Cryptography.BCrypt.dll 中发生“System.ArgumentException”类型的未处理异常
附加信息:无效的盐修订版
在 WPF 应用程序中根据 PHP 加密密码哈希验证用户输入的密码是否正确?
【问题讨论】:
-
请不要定义盐。让
password_hash()为您生成它。此参数在 PHP 7 中已弃用。
标签: c# php wpf encryption bcrypt