php实战 RSA 加密解密 第一章
RSA加密
- 前情提要
- 编写RSA密钥生成器
- 加密解密实例
- 总结
前情提要
随着网络的发展,互联网公司对于数据的保护也越来越加的严格了,众所周知最长用的两个加密算法,就是 对称加密与非对称加密了。至于这俩个算法的相关知识,大家可以自行去了解,今天着重实战RSA实现对称算法。
编写RSA密钥生成器
<?phpclass KeyGenerator
{// 新的私钥protected $res;// 密钥keyprivate $privateKey;// 公钥keyprivate $publicKey;/*** 创建密钥的配置* @var array*/protected static $config = ["digest_alg" => "sha512", // 文摘"private_key_bits" => 4096, // 私钥位 字节数"private_key_type" => OPENSSL_KEYTYPE_RSA, // 加密密钥类型"config" => "/etc/ssl/openssl.cnf"];/*** 初始化时 生成一个新的私钥* @throws Exception*/public function __construct(){$this->res = openssl_pkey_new($this->config);if (empty($this->res)) {throw new Exception('生成密钥失败');}}/*** 生成密钥* @throws Exception*/protected function generatePrivateKey(){openssl_pkey_export($this->res,$this->privateKey , null, self::$config);if (empty($this->privateKey)) {throw new Exception('生成私钥失败');}}/*** @throws Exception*/protected function generatePublicKey(){$publicKey = openssl_pkey_get_details($this->res);if (empty($publicKey['key'])) {throw new Exception('生成公钥失败');}$this->publicKey = $publicKey['key'];}/*** 生成公钥与密钥文件* @throws Exception*/public function generate(){$this->generatePublicKey();$this->generatePrivateKey();file_put_contents("./public_test.pem", $this->publicKey);file_put_contents("./private_test.pem", $this->privateKey);openssl_free_key($this->res);}
}
加密解密实例
<?phpclass Openssl
{/*** 公钥加密* @param array $data* @param string $publicKeyFile* @return mixed* @throws Exception*/public function encrypt(array $data, string $publicKeyFile){$filePath = __DIR__.'/'.$publicKeyFile;if (!file_exists($filePath)) {throw new Exception('公钥文件没有找到');}$publicKey = file_get_contents($filePath);openssl_public_encrypt(json_encode($data), $encrypted, $publicKey);return $encrypted;}/*** 公钥解密* @param string $encrypted* @param string $privateKeyFile* @throws Exception*/public function decrypt(string $encrypted, string $privateKeyFile){$filePath = __DIR__.'/'.$privateKeyFile;if (!file_exists($filePath)) {throw new Exception('私钥文件没有找到');}$privateKey = file_get_contents($privateKeyFile);openssl_private_decrypt($encrypted, $decrypted, $privateKey);}
}
总结
在使用此算法时,我们需要着重注意对公钥私钥的保存与管理。如果是在对外的接口时,就需要不同公钥私钥去进行处理。下一章我将会对加密算法摘要做出处理。
php实战 RSA 加密解密 第一章相关推荐
- ios php rsa加密解密,php rsa加密解密使用详解
第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem 从上面看出通 ...
- angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现
今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...
- 条理清晰的入门:使用Java实现RSA加密解密
条理清晰的入门:使用Java实现RSA加密解密 什么是RSA 使用Java 需要导入的头文件 生成公钥.私钥 进行加密解密 密钥的存储 密文的存储.读取 什么是RSA 翻一下以前的密码学笔记,找到了! ...
- RSA加密解密和签名的应用场景
由 RSA 可以生成一对密钥(私钥和公钥) 明文消息用公钥进行加密后,可以得到密文消息. 密文消息必须用私钥进行解密后,才能得到明文消息. 公钥是公布出去的,任何人都可以知道. 密钥自己藏着,只有自己 ...
- IOS之RSA加密解密与后台之间的双向加密详解
IOS之RSA加密解密与后台之间的双向加密详解 序言 因为项目中需要用到RSA加密,刚开始也是有点乱,这两天也整理的差不多了,希望能帮到大家. 这次先上代码,我想大部分人肯定是着急解决问题,所以不要废 ...
- Crypto++安装和简单使用RSA加密解密
Crypto++安装和简单使用 一.前言 二.下载 三.安装 四.使用 五.RSA加密/解密 (一)生成密钥/公钥 (二)OAEP加密/解密 六.RSA加密/解密的源码 一.前言 能搜索这个的估计都知 ...
- rsa加解密算法报告c语言,RSA加密解密算法c语言程序Word版
<RSA加密解密算法c语言程序Word版>由会员分享,可在线阅读,更多相关<RSA加密解密算法c语言程序Word版(5页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版 ...
- iOS使用Security.framework进行RSA 加密解密签名和验证签名
iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...
- genrsa out php,PHP进行RSA加密解密
最近在着手写一个服务端安全接口规范,需要用到RSA加密解密.所以小试牛刀一下,并且做个记录. 环境: Win7 64位 PHP 5.6.12 需要原型工具: 一.安装OpenSSL 随意安装到哪里 二 ...
最新文章
- linux下mysql服务架设_linux下源码搭建php环境之mysql(一)
- 【C语言】while后接分号“ ;”的用法
- 垃圾回收②---相关概念
- Mysql 零距离-入门(三)数据类型
- numpy——numpy.corrcoef
- JSON与JAVA数据的转换。JSONObject.fromObject()和JSONObject.toBean()
- VIM 第五节:文件信息、跳转、定位括号和缩进 https://fishc.com.cn/thread-65856-1-1.html
- android x86玩和平精英,和平精英iOS和安卓可以一起玩吗 和平精英iOS和安卓数据互通吗...
- vue项目用electron打包成windows(.exe)桌面应用--操作步骤、填坑方法、基础设置
- C语言编写一个计算字符串长度的函数 my_strlen();
- 记忆拼图游戏设计及完整代码
- 视频编解码 GOP基本概念
- 海量数据荣获华为“中国政企数据存储优秀合作伙伴”金奖
- 程序员过中秋 | 如何用代码绘制月亮?
- 【交换机和路由器的区别】
- 【监听器篇】4.统计当前在线的用户人数
- linux内存测试工具memtest,内存检测工具Memtest使用方法(图文教程)
- android常用词汇带音标,下拉通知栏就能背单词,不知不觉懂了好多 - 贝壳单词 #Android...
- SSDT HOOK技术轻松让最新版冰刃、XueTr失效
- cocos-lua学习笔记(九)动作