PHP 加密:AES & RSA 最近两年一直从事与金融相关项目的开发与维护 。但是 , 关于 PHP 加密解密的最佳实践 , 网上没有人给出一个完美的总结 。恰逢最近看了《图解密码技术》一书,对 PHP 加解密有了更深刻的认识 。
为了避免各位看枯燥的文字理论,开篇我就把总结给出:
一、对称加密
对称加密的特点是加解密速度快,加密后的密文强度目前还没有硬解的可能性 。但是 , 在未来随着计算机性能的提升有可能会出现被破解的可能性 。
对称加密的缺点也很明显 。对称加密的加密过程与解密过程使用的是同一把密钥 。一旦泄漏密钥,加密就失去了任何意义 。
根据《图解密码技术》一书的推荐,对称加密目前推荐使用 AES 。在 PHP 当中要实现 AES 加解密,是使用 openssl 扩展来实现 。所以 , 请确保你的 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 php本篇文章是对php中php_openssl dll的作用进行了详细的分析介绍 需要的朋友参考下
一 openssl简介数据加密是信息信息传输中的一个重要组成部分 任何信息都以明文方式传输 确实是个很不安全的做法 所以 需要对数据进行加密 将明文数据转换为密文数据 再进行传输
OpenSSL是一套用于SSL/TLS协议的加密工具 其作用有:生成私有密钥 生成证书 即数字签名证书 它包含一个公有密钥 可以用来单向的加密和解密数据 即 使用公钥加密的数据 只能使用 私有密钥解密 使用私钥加密的数据 可以使用公钥来解密 计算信息摘要 SSL/TLS客户端和服务器端测试 处理S/MIME标记和邮件的加密
二 加密技术简介加密 即将明文数据转换为密文数据的过程 以起到对明文保密的作用 加密算法: 数据加密过程所采用的一种运算算法 用于将明文转换为密文 密钥: 加密算法通过与密钥进行某种运算 将明文数据进行加密 生成加密数据 解密时 加密算法通过密钥 将加密数据再转换为明文数据 现今的加密技术 加密算法是公开的 即所有人都知道加密所采用的运算方式 但只有使用密钥才能进行 对密文的解密 所以 密钥的保护 是数据安全的核心
推荐阅读
- 怎么找到路由器的连接方式,怎么找到路由器的连接方式设置
- centos7访问mongodb,centos7访问百度的命令
- excel怎么拉斜杠写字,excel斜拉线如何打字
- 经营的游戏有多少,经营游戏排行榜top10
- linux命令查看所有 linux命令查看所有进程
- 最先进的拍摄方法是什么,最先进的除皱方法是什么
- js如何防止浏览器弹窗拦截,js拦截浏览器所有请求
- go语言程序设计下载 go程序设计语言 pdf 脚本之家
- oracle索引如何提高效率,怎么建索引提高效率