我有 zend2 的 BlockCipher 在dataBase中加密的密码:
public function cipher($incKey, $password) {
$cipher = BlockCipher::factory ( 'mcrypt', array (
'algorithm' => 'aes'
));
$cipher->setKey ( $incKey );
$text = $password;
$encrypted = $cipher->encrypt ( $text );
echo "Encrypted text: $encrypted \n";
return $encrypted;
}
现在我需要在登录时验证用户的密码:
$cipher = new Cipher();
$ciphered_password = $cipher->cipher($incKey, $data['usr_password']);
$authAdapter = new AuthAdapter($dbAdapter,
'users',
'email',
'password',
"CONCAT('$ciphered_password') AND state= 1"
);
但未通过身份验证;
代码: FAILURE_CREDENTIAL_INVALID
我在这里做错了吗?
任何帮助都将不胜感激。
答案 0 :(得分:0)
Blockcipher::factory
使用的加密模式不确定。用随机IV初始化的It uses CBC因此每个密文(加密的明文)看起来不同并且伪随机。您应该使用密码哈希。 This page似乎是zend中适当的资源。在security.se上,您可以找到一些background knowledge to password storage。