对加密密码使用身份验证

时间:2014-04-16 01:25:36

标签: php authentication encryption passwords zend-framework2

我有 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

我在这里做错了吗?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

Blockcipher::factory使用的加密模式不确定。用随机IV初始化的It uses CBC因此每个密文(加密的明文)看起来不同并且伪随机。您应该使用密码哈希This page似乎是zend中适当的资源。在security.se上,您可以找到一些background knowledge to password storage