在 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);
标签:AES,加密,ECB,填充,openssl,PKCS7Padding,encrypt,php From: https://www.cnblogs.com/bpsh/p/18415694