openssl_decrypt():传递的 IV 长度为 29 个字节,比所选密码预期的 16 个字节长,已截断

问题描述 投票:0回答:1

当我尝试从管理员端登录某些帐户时,我在标题上收到错误消息。 这是代码:

private function decryptString($string){

    $ciphering = "AES-128-CTR";  
    $options = 0; 
    $decryption_iv = '4F109F987HJ91597CCB4AF4D6'; 
    $decryption_key = "(Ct:>)xByg68>In&l1P!;6dhd>llD-zel.9aSC+986cn;j8,.J"; 
    $decryption = openssl_decrypt($string, $ciphering, 
                $decryption_key, $options, $decryption_iv); 
    return $decryption;
}

日志显示错误出现在“$decryption = openssl_decrypt”行中

尝试更改为 256-ctr,但没有任何作用。想不出其他什么,改变 aes 模式也不是一个选择。

aes block-cipher
1个回答
0
投票

正如您从docs中看到的,iv是一个非NULL初始化向量。它的类型为

String
。您的静脉注射是:

$decryption_iv = '4F109F987HJ91597CCB4AF4D6';

对于你的算法来说太长了

$ciphering = "AES-128-CTR";

您的算法的 iv 长度应为 16 个字节,请参阅 https://www.baeldung.com/java-invalidalgorithmparameter-exception

因此,您要么需要新的静脉注射,要么改变您的算法,具体取决于什么更适合您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.