如果使用 CBC 模式,那么在加密的时候,就需要一个前置的加密向量 IV 。当初博主在使用 AES 来加密的时候,就很奇怪一个对称加密为何要这个向量 。因为,在博主寒冰的潜意识里,对称加密只需要一个密钥就 Ok 了 。没想到 AES 加密还有多种模式 , 而这个 CBC 模式恰恰就需要一个这样的向量值 。关于这个向量大家可以在网上查阅相关的资料 。这个东西非常重要 , 也非常好理解 。
关于 PHP AES 加解密会用到的相关方法:
AES 支持三种强度:128、192、256 。128 位的强度最低,但是 , 加密解密速度较快 。256 位强度最高,但是,加密解密速度最低 。所以,大家根据自己系统的重要程度选择使用对应强度 。通常普通的金融项目使用 192 位完整够用了 。顶级的就用 256 位 。其他的就用 128 位吧 。
二、非对称加密
非对称加密是指公钥加密私钥解密,私钥加密公钥解密的算法 。非对称加密的算法有很多 。《图解密码技术》一书推荐使用 RSA 算法 。它使用起来也非常简单 。
要使用 RSA 算法 。首先,我们必须生成一对公钥私钥 。其实生成公钥私钥很简单 。
在 Linux 系统,直接使用如下命令生成:
此命令会生~/.ssh/目录下生成两个文件:
id_rsa是私钥,is_rsa.pub是公钥 。
关于 PHP RSA 加解密会用到的相关方法:
以上就是关于在 PHP 项目开发中,我们使用的加密解密算法的一个总结 。博主寒冰在总结过程中难免会有不足之处,还请大家指正!谢谢!
PHP的aes加解密算法1. php的aes算法,加密时会存在空格,0,\0等方式进行补长,所以解密后需要进行trim操作 , 才能得到原数据串
2. aes加密后进行base64_encode,但是解密时 , 直接用aes进行解密 , 不需要先base64_decode.【这个操作很骚气】
function _decryptData($data,$password, $iv){
$decryptData=https://www.04ip.com/post/openssl_decrypt($data,'aes-128-cbc', $password, OPENSSL_ZERO_PADDING, $iv);
$data =https://www.04ip.com/post/json_decode(trim($decryptData), true);
return $data;
}
function encryptData($data, $password, $iv){
$data = https://www.04ip.com/post/json_encode($data);//$data是一个数组,如果是字符串,请忽略此句.
$result = base64_encode(openssl_encrypt($data, 'aes-128-cbc', $password, OPENSSL_RAW_DATA, $iv));
return $result;
}
PHP对称加密-AES 对称加解密算法中,当前最为安全的是 AES 加密算法(以前应该是是 DES 加密算法),PHP 提供了两个可以用于 AES 加密算法的函数簇: Mcrypt和OpenSSL。
其中 Mcrypt 在 PHP 7.1.0 中被弃用(The Function Mycryptis Deprecated),在 PHP 7.2.0 中被移除,所以即可起你应该使用 OpenSSL 来实现 AES 的数据加解密 。
在一些场景下,我们不能保证两套通信系统都使用了相函数簇去实现加密算法,可能 siteA 使用了最新的 OpenSSL 来实现了 AES 加密,但作为第三方服务的 siteB 可能仍在使用 Mcrypt 算法,这就要求我们必须清楚 Mcrypt 同 OpenSSL 之间的差异 , 以便保证数据加解密的一致性 。
下文中我们将分别使用 Mcrypt 和 OpenSSL 来实现 AES-128/192/256-CBC加解密 , 二者同步加解密的要点为:
协同好以上两点 , 就可以让 Mcrypt 和 OpenSSL 之间一致性的对数据进行加解密 。
AES 是当前最为常用的安全对称加密算法,关于对称加密这里就不在阐述了 。
AES 有三种算法 , 主要是对数据块的大小存在区别:
AES-128:需要提供 16 位的密钥 key
AES-192:需要提供 24 位的密钥 key
AES-256:需要提供 32 位的密钥 key
- 纯phpmysql
- 查找php.ini phpredis查找
- mongodb数据丢失原因 为什么mongodb数据库一直在加载中
- redis 加一 增加redis服务
- redis incr锁 redis加锁方式
- php7连接mysql php连接mysql源码
- redis做缓存 redis怎么加缓存的
- mongodb建库 mongodb中怎么添加库权限
- mysql主键需要加索引吗 mysql加主键过程原理
- redis重新加载配置 redis重新命令
