当前位置:网站首页>AES-128-CBC-Pkcs7Padding加密PHP实例
AES-128-CBC-Pkcs7Padding加密PHP实例
2022-06-29 11:59:00 【owenzhang24】
本文环境 PHP8.1,Mysql5.7
不懂的可以评论或联系我邮箱:[email protected]
著作权归OwenZhang所有。商业转载请联系OwenZhang获得授权,非商业转载请注明出处。
大概
AES-128-CBC-Pkcs7Padding加密PHP实例:
(https://www.mklab.cn/utils/aes)
编码base64,模式cbc,填充Pkcs7Padding,位数128位,
输入格式base64,输出格式string,字符集utf-8,
密钥T3lUf3t4ddHzSx8U,偏移量cdccB3uiWDu7mcxw
(例如17350886066加密后+eupvMFtSc0E7veMi+XCgQ==)
(https://www.lddgo.net/encrypt/aes)

AES介绍
1.AES简介:
AES即高级加密标准(Advanced Encryption Standard),是美国NIST在2001年发布的,旨在代替DES称为广泛使用的标准。AES是一种对称分组密码算法。
2.AES的分组长度和密钥长度:
AES的明文分组长度为128位(16字节),密钥长度可以为128位(16字节)、192位(24字节)、256位(32字节),根据密钥长度的不同,AES分为AES-128、AES-192、AES-256三种。
AES-PHP服务代码
代码块介绍
openssl_encrypt($data, $method, $password, $options, $iv)
- 参数说明:
- $data 加密明文
- $method 加密方法: DES-ECB
DES-CBC
DES-CTR
DES-OFB
DES-CFB
$passwd 加密密钥[密码]
$options 数据格式选项(可选)【选项有:】 0
OPENSSL_RAW_DATA=1
OPENSSL_ZERO_PADDING=2
OPENSSL_NO_PADDING=3
- $iv 密初始化向量(可选)
如果method为DES-ECB,则iv无需填写
具体代码
<?phpnamespace app\service;class AesService{ public static ?AesService $_instance = null; /*密钥,22个字符*/ protected string $key = 'T3lUf3t4ddHzSx8U'; /*向量,8个或10个字符*/ protected string $iv = 'cdccB3uiWDu7mcxw'; /** * @return AesService|mixed */ public static function instance(): ?AesService { if (!static::$_instance) static::$_instance = new self(); return static::$_instance; } public function setkey(string $key): static { $this->key = $key; return $this; } public function getkey(): string { return $this->key; } public function getiv(): string { return $this->iv; } /** * 加密 * AES/CBC/PKCS7Padding * AES加密:(https://www.mklab.cn/utils/aes) * 编码base64,模式CBC,填充Pkcs7Padding,位数128位,输入格式base64,输出格式string, * 字符集utf-8,密钥T3lUf3t4ddHzSx8U,偏移量cdccB3uiWDu7mcxw * (例如17350886066加密后+eupvMFtSc0E7veMi+XCgQ==) * (https://www.lddgo.net/encrypt/aes) * * @param boolean $status 是否加密 * * @return string 处理过的数据 */ public function encrypt($data, bool $status = true): string { if (is_array($data)) $data = json_encode($data); $key = $this->getkey(); $iv = $this->getiv(); if ($status) return base64_encode(openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv)); return $data; } /** * 解密 * * @return string 加密的字符串不是完整的会返回空字符串值 */ public function decrypt($data, bool $status = true): string { $key = $this->getkey(); $iv = $this->getiv(); if ($status) return openssl_decrypt(base64_decode($data), 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); return $data; }}AES-调用代码
AES加密
const API_AES_KEY = 'T3lUf3t4ddHzSx8U'; $mobileAesEncrypt = AesService::instance()->setkey(API_AES_KEY)->encrypt('17350886066');
AES解密
const API_AES_KEY = 'T3lUf3t4ddHzSx8U'; $mobileAesDecrypt = AesService::instance()->setkey(API_AES_KEY)->decrypt('+eupvMFtSc0E7veMi+XCgQ==');
Buy me a cup of coffee :)
觉得对你有帮助,就给我打赏吧,谢谢!
微信赞赏码链接,点击跳转:
边栏推荐
- GBase8s数据库与 FOR UPDATE 子句不兼容的语法
- Paper reproduction - ac-fpn:attention-guided context feature pyramid network for object detection
- ShanDong Multi-University Training #3
- 云龙开炮版飞机大战(完整版)
- 求大数的阶乘 ← C语言
- How can colleges and universities build future oriented smart campus based on cloud native? Full stack cloud native architecture vs traditional IT architecture
- [comprehensive case] credit card virtual transaction identification
- GBase8s数据库FOR UPDATE 子句
- Unexpected ‘debugger‘ statement no-debugger
- LeetCode_ Double pointer_ Medium_ 328. parity linked list
猜你喜欢

Recommended model recurrence (I): familiar with torch rechub framework and use

Earth observation satellite data

【综合案例】信用卡虚拟交易识别

【云原生】2.4 Kubernetes 核心实战(中)

《高难度谈话》突破谈话瓶颈,实现完美沟通

Interview shock 61: tell me about MySQL transaction isolation level?

Unexpected ‘debugger‘ statement no-debugger

智能指标驱动的管理和决策平台 Kyligence Zen 全新上线,限量内测中

一种可解释的几何深度学习模型,用于基于结构的蛋白质结合位点预测

go 学习-搭建开发环境vscode开发环境golang
随机推荐
GBase8s数据库select有HAVING 子句
GBase8s数据库INTO STANDARD 和 INTO RAW 子句
内插散点数据
MySQL主从同步之 异步复制 半同步复制 全同步复制
Syntax of gbase8s database incompatible with for update clause
Cocos star meetings at Hangzhou station in 2022
ERP编制物料清单 基础
《Go题库·14》WaitGroup的坑
云龙开炮版飞机大战(完整版)
535. encryption and decryption of tinyurl: design a URL simplification system
Pangolin编译error: ‘numeric_limits’ is not a member of ‘std’
GBase8s数据库select有ORDER BY 子句6
GBase8s数据库select有ORDER BY 子句
Matlab简单入门
oracle 19c : change the user sys/system username pasword under Linux
2022.6.28-----leetcode. three hundred and twenty-four
揭秘百度智能测试在测试自动执行领域实践
GBase8s数据库select有ORDER BY 子句2
[cloud native] 2.4 kubernetes core practice (middle)
MFC-对话框程序核心-IsDialogMessage函数-MSG 消息结构-GetMessage函数-DispatchMessage函数