AES加密的坑

news/2024/11/27 8:28:05/

其实不应该算AES加密的坑,而是加密后使用的坑

正常的加密应该是

$data = openssl_encrypt($input, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->hex_iv);
返回给用户使用还要base64编码,
base64_encode($data)

 

就是这个编码可能会造成解密错误!是的,是解密会错误!加密没事

 

原因就是因为:base64编码的过程中会产生+,但是+在浏览器url中会替换成空格,所以最好的做法是

 

编码后替换+为其他字符

 

解密之前将+替换回来

 

如下

 

/**加密**/
public function encrypt($input)
{$data = openssl_encrypt($input, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->hex_iv);$data =str_replace('+','|',base64_encode($data));return $data;
}
/**解密***/
public function decrypt($input)
{$data=base64_decode(str_replace('|','+',$input));$decrypted = openssl_decrypt($data,'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->hex_iv);return $decrypted;
}

http://www.ppmy.cn/news/940389.html

相关文章

AES加密过程

AES是一个对称密码,旨在取代DES成为广泛使用的标准。 一、AES的加密过程 二、AES的数据结构 加密解密算法的输入是一个128位分组。这些分组被描述成44的字节方阵,这个分组被复制到state数组中,并在加密和解密的每一阶段都被修改。在字节方阵…

AES加密代码

这里分享AES的加密代码&#xff0c;包含两种填充方式PKCS7Padding和PKCS5Padding。代码中加密后的数据再加密成Base64形式&#xff0c;这一部分也可以换成16进制的形式。 Java本身是不支持PKCS7Padding加密、解密的&#xff0c;因此需要添加外部依赖。 <!-- https://mvnre…

AES加密操作

AES基本过程图解&#xff1a; &#xff08;1&#xff09;明文P&#xff1a;没有经过加密的数据。 &#xff08;2&#xff09;密钥K&#xff1a;用来加密明文的密码&#xff0c;在对称加密算法中&#xff0c;加密与解密的密钥是相同的。密钥为接收方与发送方协商产生&#xff0c…

AES加密文件

使用Python对文件进行AES算法的加密和解密 AES算法简介 高级加密标准, 它是一种对称加密算法&#xff0c;AES只有一个密钥&#xff0c;这个密钥既用来加密&#xff0c;也用于解密。 AES加密方式有五种&#xff1a;ECB, CBC, CTR, CFB, OFB。 从安全性角度推荐CBC加密方法&am…

AES加密简析

* AES加密是对称加密 128 192 256 分别表示密钥的长度 * AES的加密方式会将明文拆分成不同的块进行加密&#xff0c;例如一个256 位的数据用128的密钥加密&#xff0c;则分成 明文1&#xff08;128位&#xff09; 明文2&#xff08;128位&#xff09; 加密 密文1&#xff0…

Linux AES加密

一、AES ECB 256 加密函数 /* 功能&#xff1a;进行AES加密&#xff0c;返回hex转成的字符串 输入参数&#xff1a;Plaintext&#xff1a;明文 长度是16的倍数Ciphertext&#xff1a;密文 长度是明文长度的两倍key:密钥. */ int AES256_encrypt( unsigned char *Plaintext,unsi…

AES加密分析

声明&#xff1a;本文章所有内容仅供学习使用&#xff0c;无其它任何目的&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则产生一切后果均与作者无关 目标链接&#xff1a;aHR0cHM6Ly9qenNjLm1vaHVyZC5nb3YuY24vZGF0YS9jb21wYW55 1.抓包分析 F12打开控制台&#xff0c…

Swift AES加密

AES是对称加密 Swift开发是使用CryptoSwift第三方库 配置方法&#xff1a;在Podfile文件中添加 pod ‘CryptoSwift’, ‘~> 1.6.0’ pod install即可 swift代码 /// AES加密/// aes_key &#xff1a; key/// iv &#xff1a; 偏移量static func aes_encrypt(_ str: String,…