将mcrypt_encrypt传输到openssl_encrypt

时间:2019-10-25 06:03:14

标签: php aes php-openssl

当尝试在AES中移动mcrypt_encrypt函数openssl_encrypt时,得到了不同的结果。

function encrypt3($data, $secret){
        //Generate a key from a hash
        $key = md5(utf8_encode($secret), true);

        //Pad for PKCS7
        $blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
        $len = strlen($data);
        $pad = $blockSize - ($len % $blockSize);
        $data .= str_repeat(chr($pad), $pad);

        //Encrypt data MCRYPT_RIJNDAEL_128, ECB equal to C# AES
        $encData = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB);

        return base64_encode($encData);
    }


function en_test($data,$cipher_method,$secret_key,$iv){
    $secret_key = md5(utf8_encode($secret_key), true);

    $result = openssl_encrypt($data, $cipher_method, $secret_key, OPENSSL_RAW_DATA, 0);
    return base64_encode($result);

}

$result = openssl_encrypt($data, "AES-128-CBC", $secret_key, OPENSSL_RAW_DATA, 0);

在mcrypt_encrypt中没有iv传递,我尝试不将IV传递给open_ssl,但是会出错, IV传递的只有1个字节长,密码期望IV恰好是16个字节, 在.net示例代码中,需要传递$ iv值。

任何帮助将不胜感激。

谢谢

0 个答案:

没有答案