首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP8中带PKCS#5填充的CBC模式下的AES (块大小128位)

PHP8中带PKCS#5填充的CBC模式下的AES (块大小128位)
EN

Stack Overflow用户
提问于 2021-09-09 17:22:50
回答 1查看 169关注 0票数 0

试图将加密的数据从laravel php8应用程序发送到sage pay或opayo。

我不知道如何使用PHP8中的PKCS#5填充在CBC模式下执行AES (块大小为128位)。

Openssl似乎只让我们填充PKCS#7和旧的PHP示例和方法都依赖于弃用/删除的函数。

代码语言:javascript
复制
 $cryptFieldString = http_build_query($cryptFields);
 $encodedCrypt = openssl_encrypt($cryptFieldString, 'aes-128-cbc', $key, 0, $key);
 $crypt = '@'.strtoupper(bin2hex($encodedCrypt));

$encodedCrypt变量将始终返回PKCS#7或原始数据。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2021-11-11 09:53:18

PKCS#5填充只是在bin2hex和openssl_encrypt的组合中添加的,你不需要使用任何其他函数。但是,您必须检查编码是否支持,如下所示

代码语言:javascript
复制
if( in_array( 'AES-128-CBC', openssl_get_cipher_methods() ) ) {
            $cipher_method = 'AES-128-CBC';
        }

        if( in_array( 'aes-128-cbc', openssl_get_cipher_methods() ) ) {
            $cipher_method = 'aes-128-cbc';
        }

因此您可以使用bin2hex( openssl_encrypt( $input, $cipher_method, $securekey, OPENSSL_RAW_DATA, $securekey ) )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69122397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档