Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openssl提供unpadblock:错误的解密错误 我在尝试用C++解密我在PHP中加密时得到这个错误,但是它有时只发生: B8:48:00:00:error:Provider routines:unpadblock:bad decrypt:providers\implementations\ciphers\ciphercommon_block.c:104:_Php_C_Openssl_Php Openssl - Fatal编程技术网

Openssl提供unpadblock:错误的解密错误 我在尝试用C++解密我在PHP中加密时得到这个错误,但是它有时只发生: B8:48:00:00:error:Provider routines:unpadblock:bad decrypt:providers\implementations\ciphers\ciphercommon_block.c:104:

Openssl提供unpadblock:错误的解密错误 我在尝试用C++解密我在PHP中加密时得到这个错误,但是它有时只发生: B8:48:00:00:error:Provider routines:unpadblock:bad decrypt:providers\implementations\ciphers\ciphercommon_block.c:104:,php,c,openssl,php-openssl,Php,C,Openssl,Php Openssl,我使用php服务器加密: $iv=generateRandomString(16);//16char random->作为消息中的前16个字符发送 $key=getKey();//32char $data\u en=openssl\u encrypt($data,“AES-256-CBC”,$key,0,$iv); echo$iv$数据挖掘; 这是我的C++客户端代码: int解密(无符号字符*密文,int密文,无符号字符*密钥, 无符号字符*iv,无符号字符*纯文本) { EVP_CIPHE

我使用php服务器加密:

$iv=generateRandomString(16);//16char random->作为消息中的前16个字符发送
$key=getKey();//32char
$data\u en=openssl\u encrypt($data,“AES-256-CBC”,$key,0,$iv);
echo$iv$数据挖掘;

这是我的C++客户端代码:

int解密(无符号字符*密文,int密文,无符号字符*密钥,
无符号字符*iv,无符号字符*纯文本)
{
EVP_CIPHER_CTX*CTX;
内伦;
int纯文本;
/*创建并初始化上下文*/
如果(!(ctx=EVP\u CIPHER\u ctx\u new())
handleErrors();
/*
*初始化解密操作。重要信息-确保使用密钥
*和适合您密码的IV大小
*在本例中,我们使用256位AES(即256位密钥)
**大多数*模式的IV大小与块大小相同。对于AES
*是128位
*/
if(1!=EVP_DecryptInit_ex(ctx,EVP_aes_256_cbc(),NULL,key,iv))
handleErrors();
/*
*提供要解密的消息,并获得明文输出。
*如有必要,可以多次调用EVP_DecryptUpdate。
*/
if(1!=EVP_DecryptUpdate(ctx、明文和len、密文、密文_len))
handleErrors();
明文_len=len;
/*
*完成解密。可在以下位置写入更多明文字节:
*这个阶段。
*/
如果(1!=执行副总裁(ctx、明文+len和len))
handleErrors();
明文_len+=len;
/*清理*/
无密码(CTX)的执行副总裁;
返回纯文本;
}
最奇怪的是,它会一次出错一次