Aes加密 AES-128-CBC NOPADDING

本文介绍了使用PHP的openssl_encrypt函数进行AES-128-CBC加密的方法,强调了加密向量IV的重要性,特别是在没有预设IV时将其设置为密钥相同。还讨论了NOPADDING填充方式,要求加密字符串长度为16的倍数,并提到了其他填充方式如OPENSSL_RAW_DATA和OPENSSL_ZERO_PADDING。文章中还提醒了加密结果中的特殊字符转换问题,确保解密时的一致性。
摘要由CSDN通过智能技术生成

记一个Aes的加密方式,aes为对称加密,加密和解密的密钥时一样的

使用php 的openssl_encrypt函数,

cbc加密方式需要有加密向量iv,当没有加密向量时,将它设置与密钥一样

nopadding填充方式,需要手动对加密字符串填充,要求字符串位数为16的倍数,不够的用0填充
另外还有 OPENSSL_RAW_DATA方式【会用PKCS#7进行补位】, OPENSSL_ZERO_PADDING方式

加密完之后的一些特殊字符比如 / + =,需要进行替换,替换为什么要与解密方一致

直接上代码:

class Aes
{
   
    /**
     * var string $method 加解密方法,可通过openssl_get_cipher_methods()获得
     */
    protected $method;

    /**
     * var string $secret_key 加解密的密钥
     */
    protected $secret_key;

    /**
     * var string $iv 加解密的向量,有些方法需要设置比如CBC
     */
    protected $iv;

    /**
     * var string $options 填充类型
     */
    protected $options;

    /**
     * 构造函数
     *
     * @param string $key 密钥
     * @param string $method 加密方式
     * @param string $iv iv向量
     * @param mixed $options 填充类型,nopadding为3(OPENSSL_NO_PADDING)
     *
     */
    public function __construct($key, $method = 'AES-128-CBC', $iv = '', $options = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值