0

我想在 Yii 框架中使用 openssl_encrypt 加密一个数字;

我设法加密了这个号码;

尝试解密数字时,我得到一个空值;

class Utils {
    /*
     * variables and values used to encrypt and decrypt the cnp
     */
    public static $textToEncrypt = "My super secret information.";
    public static $encryptionMethod = "AES-256-CBC"; // AES is used by the U.S. gov't to encrypt top secret documents.
    public static $secretHash = "25c6c7ff35b9979b151f2136cd13b0ff";
    public static $options = false;//options can be one of OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING or false
    public static $iv = '1234567890123456';

}

这就是我加密数字的方式,这部分有效,因为我得到了结果:

$this->user->cnp = openssl_encrypt($this->user->cnp, Utils::$encryptionMethod, Utils::$secretHash, Utils::$options, Utils::$iv);

这是我解密的方式,但我得到了一个空值:

$a = openssl_decrypt($model->cnp, Utils::$encryptionMethod, Utils::$secretHash, Utils::$options, Utils::$iv);

echo 'cnp decripted: ' . $a;

为什么我在使用这些函数时没有得到原始值:

echo 'cnp encrypted: ' . openssl_encrypt('1850302260089', Utils::$encryptionMethod, Utils::$secretHash, Utils::$options, Utils::$iv);

echo ' cnp decripted' . openssl_decrypt('1850302260089', Utils::$encryptionMethod, Utils::$secretHash, Utils::$options, Utils::$iv);
4

1 回答 1

1

openssl这与您尝试的价值无关decrypt

你从哪里来$model->cnp的???这就是问题所在

尝试

$cnpData = openssl_encrypt($this->user->cnp, Utils::$encryptionMethod, Utils::$secretHash, Utils::$options, Utils::$iv);
$a = openssl_decrypt($cnpData , Utils::$encryptionMethod, Utils::$secretHash, Utils::$options, Utils::$iv);

echo 'cnp decripted: ' . $a

刚刚测试它,它工作得很好

于 2013-06-10T12:53:41.750 回答