Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

PHP7如何实现AES/ECB/PKCS5Padding加密

作者:恋你如初   发布日期:2023-12-06   浏览:986

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参数可以为空。

上一篇:vagrant如何搭建php7环境

下一篇:php7怎么安装 mbstring 扩展

大家都在看

php session用法

phpisset函数

php后端

php爬虫框架

php读取csv文件

php 三元表达式

php文件加密

php 拆分字符串

php pcntl

php ||

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站