使用AES_CBC_PKCS5进行PHP加密



社区。

我正在尝试访问API来获取一些用户的登录信息,因为我的应用程序没有本地数据库。

负责数据库的团队给了我以下信息:

  • 加密类型:AES_CBC_PKCS5
  • KEY:[ther_KEY]
  • IV: [ther_IV]
  • 还有一个GET端点

他们还给了我一个示例用户名/密码和加密的对应密码

我在做这个:

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_DATAOPENSSL_ZERO_PADDING

但我的成绩和他们的不一样。

到目前为止,我还没有听说过这种加密类型。我在这里做错了什么?我需要一些指导。

提前感谢您抽出时间。

您缺少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);

最新更新