php AES/ECB/PKCS7Padding 加密

在 PHP 中,直接使用 openssl_encrypt 函数时,它并不直接支持 PKCS7Padding,特别是当使用 ECB 模式时,因为 ECB 模式本身并不关心数据填充(每个块都是独立加密的,且块大小固定为 AES 的块大小,即 128 位或 16 字节)。然而,由于 AES 的块大小与 PKCS#7 填充的最小单位(1 字节)相同,在 ECB 模式下,如果数据长度已经是块大小的整数倍,则实际上不需要额外的填充。如果数据长度不是块大小的整数倍,则理论上应该添加填充,但 PHP 的 openssl_encrypt 在 ECB 模式下可能不会自动添加这种填充。

 

然而,为了符合 PKCS#7 填充的“精神”(尽管在 ECB 下可能不是必需的),我们可以手动添加一个填充层,但请注意,这在实际操作中可能不是必需的,因为加密函数可能会以某种方式处理它(尽管 PHP 的 openssl_encrypt 在 ECB 下可能不会)。

 

直接上代码

$key = "hanvon1234554321";
// 组合密码和时间戳
$password = "123654";
$timestamp = time() * 1000;
$data = $password . "@" . $timestamp;
// 设置加密方法、密钥和选项
$method = 'AES-128-ECB';
$options = 0;

$encrypted = openssl_encrypt($data, $method, $key, $options, "");
var_dump($encrypted);

 

posted @ 2024-09-15 21:41  北漂生活  阅读(440)  评论(0编辑  收藏  举报