AES-128-CBC-Pkcs7Padding加密PHP实例

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: AES-128-CBC-Pkcs7Padding加密PHP实例

大概

AES-128-CBC-Pkcs7Padding加密PHP实例:

编码base64,模式cbc,填充Pkcs7Padding,位数128位,

输入格式base64,输出格式string,字符集utf-8,

密钥T3lUf3t4ddHzSx8U,偏移量cdccB3uiWDu7mcxw

(例如17350886066加密后+eupvMFtSc0E7veMi+XCgQ==)

(www.mklab.cn/utils/aes)

(www.lddgo.net/encrypt/aes)

01ebd755782e4c909dad0843d3544acf.jpeg

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,data, data,method, password,password, 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无需填写

具体代码

<?php
namespace 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==');


目录
相关文章
|
2月前
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性与扩展性本文旨在探讨PHP中常见的设计模式及其应用,帮助开发者编写出更加灵活、可维护和易于扩展的代码。通过深入浅出的解释和实例演示,我们将了解如何使用设计模式解决实际开发中的问题,并提升代码质量。
在软件开发过程中,设计模式是一套经过验证的解决方案模板,用于处理常见的软件设计问题。PHP作为流行的服务器端脚本语言,也有其特定的设计模式应用。本文将重点介绍几种PHP中常用的设计模式,包括单例模式、工厂模式和策略模式,并通过实际代码示例展示它们的具体用法。同时,我们还将讨论如何在实际项目中合理选择和应用这些设计模式,以提升代码的可维护性和扩展性。
61 4
|
12天前
|
PHP
PHP的pcntl多进程用法实例
PHP使用PCNTL系列的函数也能做到多进程处理一个事务。
|
1月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
2月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:如何提高代码的可维护性与扩展性在软件开发领域,PHP 是一种广泛使用的服务器端脚本语言。随着项目规模的扩大和复杂性的增加,保持代码的可维护性和可扩展性变得越来越重要。本文将探讨 PHP 中的设计模式,并通过实例展示如何应用这些模式来提高代码质量。
设计模式是经过验证的解决软件设计问题的方法。它们不是具体的代码,而是一种编码和设计经验的总结。在PHP开发中,合理地使用设计模式可以显著提高代码的可维护性、复用性和扩展性。本文将介绍几种常见的设计模式,包括单例模式、工厂模式和观察者模式,并通过具体的例子展示如何在PHP项目中应用这些模式。
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
46 2
|
5月前
|
Java PHP 数据安全/隐私保护
php和Java配合 aes
php和Java配合 aes加密
43 1
|
5月前
|
搜索推荐 算法 PHP
详尽分享记6种php加密解密方法
详尽分享记6种php加密解密方法
628 0
|
5月前
|
算法 PHP 数据安全/隐私保护
PHP中的数据加密技术及应用
在Web开发中,数据安全始终是一个至关重要的问题。本文将介绍PHP中常用的数据加密技术,包括对称加密算法、非对称加密算法和哈希算法的原理和应用。通过深入了解这些加密技术,开发人员可以更好地保护用户数据和提高系统的安全性。
65 0
|
6月前
|
存储 安全 算法
【PHP开发专栏】PHP加密与解密技术
【4月更文挑战第29天】本文探讨了PHP中的加密解密技术,涵盖基本概念如对称加密(AES、DES)、非对称加密(RSA、DSA)和哈希函数(MD5、SHA)。PHP提供内置函数支持加密,如`openssl_encrypt`、`openssl_pkey_new`、`hash`和`password_hash`。文章强调了最佳实践,如使用安全密钥、密钥管理和HTTPS,并给出用户注册登录的加密实战示例。通过理解和应用这些技术,开发者能增强Web应用的数据安全性。
216 1
|
6月前
|
安全 PHP 开发工具
php代码加密 php-screw-plus
php代码加密 php-screw-plus
88 0