社区。
我试图访问一个API来获取一些用户的登录信息,因为我的应用程序将没有本地数据库。
负责数据库的小组向我提供了以下信息:
AES_CBC_PKCS5;
他们还给了我一个示例用户名/密码,以及他们的加密版本.
我要这么做:
echo openssl_encrypt($string, 'aes-128-cbc', $key, 0, $iv) . '<br>';
echo openssl_encrypt($string, 'aes-192-cbc', $key, 0, $iv) . '<br>';
echo openssl_encrypt($string, 'aes-256-cbc', $key, 0, $iv) . '<br>';我还试着把0换成OPENSSL_RAW_DATA和OPENSSL_ZERO_PADDING。
但我的结果都比不上他们的。
到目前为止,我还没有听说过这种加密类型。我在这里做错什么了?我需要一些指导。
谢谢,提前给你时间。
发布于 2021-03-31 16:11:15
您错过了PKCS5填充。下面是一个示例函数及其用法:
function pkcs5pad($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
# Usage in your case
$padded_string = pkcs5pad($string, 16);
$encrypted_string = openssl_encrypt($padded_string, 'AES-256-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $iv);https://stackoverflow.com/questions/66890829
复制相似问题