为了避免各位看枯燥的文字理论,开篇我就把总结给出:
一、对称加密
对称加密的特点是加解密速度快,加密后的密文强度目前还没有硬解的可能性 。但是,在未来随着计算机性能的提升有可能会出现被破解的可能性 。
对称加密的缺点也很明显 。对称加密的加密过程与解密过程使用的是同一把密钥 。一旦泄漏密钥,加密就失去了任何意义 。
根据《图解密码技术》一书的推荐,对称加密目前推荐使用 AES 。在 PHP 当中要实现 AES 加解密,是使用 openssl 扩展来实现 。所以 , 请确保php数据加密密钥你的 PHP 已经开启了 openssl 扩展 。
可以通过如下方式检测:
或者如下方式检测:
AES 的加密模式属于分组密码模式 。所谓分组密码 , 是加密时把明文按照固定的长度分组,然后再进行加密 。当然 , 细节之处很很多不同 。AES 分组模式有多种:ECB、CBC、CFB、OFB、CTR 五种分组模式 。目前优先推荐使用 CBC 模式 。
如果使用 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对称加密-AES 对称加解密算法中php数据加密密钥,当前最为安全的是 AES 加密算法(以前应该是是 DES 加密算法),PHP 提供了两个可以用于 AES 加密算法的函数簇php数据加密密钥: Mcrypt和OpenSSL。
其中 Mcrypt 在 PHP 7.1.0 中被弃用(The Function Mycryptis Deprecated),在 PHP 7.2.0 中被移除,所以即可起php数据加密密钥你应该使用 OpenSSL 来实现 AES 的数据加解密 。
在一些场景下,我们不能保证两套通信系统都使用了相函数簇去实现加密算法,可能 siteA 使用了最新的 OpenSSL 来实现了 AES 加密,但作为第三方服务的 siteB 可能仍在使用 Mcrypt 算法,这就要求我们必须清楚 Mcrypt 同 OpenSSL 之间的差异,以便保证数据加解密的一致性 。
下文中我们将分别使用 Mcrypt 和 OpenSSL 来实现 AES-128/192/256-CBC加解密,二者同步加解密的要点为:
协同好以上两点,就可以让 Mcrypt 和 OpenSSL 之间一致性的对数据进行加解密 。
AES 是当前最为常用的安全对称加密算法,关于对称加密这里就不在阐述了 。
推荐阅读
- 营销中如何吸引客户需求,营销怎么吸引客户
- 小程序的图片怎么处理,小程序里面的图片怎么保存到手机
- gis专题制图,gis专题地图制作步骤
- .net免费框架,net框架20下载
- java人机黑白棋代码 黑白棋源代码
- 叽里呱啦安卓系统免费,叽里呱啦旧版
- 命令查看linux内存,linux命令行查看内存
- 用钉钉直播上课效果怎么样,钉钉直播上课教程
- c语言有删除指针的函数吗 c语言有删除指针的函数吗为什么