PHP7中可以使用openssl扩展来实现AES/ECB/PKCS5Padding加密。以下是一个示例代码:
<?php
function encrypt($data, $key) {
$cipher = "AES-128-ECB";
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$padding = 16 - (strlen($data) % 16);
$data .= str_repeat(chr($padding), $padding);
$encrypted = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING);
return base64_encode($encrypted);
}
function decrypt($encrypted, $key) {
$cipher = "AES-128-ECB";
$encrypted = base64_decode($encrypted);
$decrypted = openssl_decrypt($encrypted, $cipher, $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING);
$padding = ord($decrypted[strlen($decrypted) - 1]);
return substr($decrypted, 0, -$padding);
}
$key = "1234567890123456";
$data = "Hello, World!";
$encrypted = encrypt($data, $key);
echo "Encrypted: " . $encrypted . "\n";
$decrypted = decrypt($encrypted, $key);
echo "Decrypted: " . $decrypted . "\n";
?>
在上述代码中,encrypt函数接收要加密的数据和密钥作为参数,生成随机的初始向量(IV),并使用openssl_encrypt函数进行加密。在加密前,需要对数据进行PKCS5Padding填充,确保数据长度为16的倍数。加密完成后,使用base64_encode函数对加密结果进行编码。
decrypt函数接收加密后的数据和密钥作为参数,使用openssl_decrypt函数进行解密。解密完成后,需要去除PKCS5Padding填充。
注意:ECB模式不使用初始向量(IV),因此在加密和解密过程中,IV参数可以为空。
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站