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 加密解密 第一章相关推荐

  1. ios php rsa加密解密,php rsa加密解密使用详解

    第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem 从上面看出通 ...

  2. angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现

    今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...

  3. 条理清晰的入门:使用Java实现RSA加密解密

    条理清晰的入门:使用Java实现RSA加密解密 什么是RSA 使用Java 需要导入的头文件 生成公钥.私钥 进行加密解密 密钥的存储 密文的存储.读取 什么是RSA 翻一下以前的密码学笔记,找到了! ...

  4. RSA加密解密和签名的应用场景

    由 RSA 可以生成一对密钥(私钥和公钥) 明文消息用公钥进行加密后,可以得到密文消息. 密文消息必须用私钥进行解密后,才能得到明文消息. 公钥是公布出去的,任何人都可以知道. 密钥自己藏着,只有自己 ...

  5. IOS之RSA加密解密与后台之间的双向加密详解

    IOS之RSA加密解密与后台之间的双向加密详解 序言 因为项目中需要用到RSA加密,刚开始也是有点乱,这两天也整理的差不多了,希望能帮到大家. 这次先上代码,我想大部分人肯定是着急解决问题,所以不要废 ...

  6. Crypto++安装和简单使用RSA加密解密

    Crypto++安装和简单使用 一.前言 二.下载 三.安装 四.使用 五.RSA加密/解密 (一)生成密钥/公钥 (二)OAEP加密/解密 六.RSA加密/解密的源码 一.前言 能搜索这个的估计都知 ...

  7. rsa加解密算法报告c语言,RSA加密解密算法c语言程序Word版

    <RSA加密解密算法c语言程序Word版>由会员分享,可在线阅读,更多相关<RSA加密解密算法c语言程序Word版(5页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版 ...

  8. iOS使用Security.framework进行RSA 加密解密签名和验证签名

    iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...

  9. genrsa out php,PHP进行RSA加密解密

    最近在着手写一个服务端安全接口规范,需要用到RSA加密解密.所以小试牛刀一下,并且做个记录. 环境: Win7 64位 PHP 5.6.12 需要原型工具: 一.安装OpenSSL 随意安装到哪里 二 ...

最新文章

  1. linux下mysql服务架设_linux下源码搭建php环境之mysql(一)
  2. 【C语言】while后接分号“ ;”的用法
  3. 垃圾回收②---相关概念
  4. Mysql 零距离-入门(三)数据类型
  5. numpy——numpy.corrcoef
  6. JSON与JAVA数据的转换。JSONObject.fromObject()和JSONObject.toBean()
  7. VIM 第五节:文件信息、跳转、定位括号和缩进 https://fishc.com.cn/thread-65856-1-1.html
  8. android x86玩和平精英,和平精英iOS和安卓可以一起玩吗 和平精英iOS和安卓数据互通吗...
  9. vue项目用electron打包成windows(.exe)桌面应用--操作步骤、填坑方法、基础设置
  10. C语言编写一个计算字符串长度的函数 my_strlen();
  11. 记忆拼图游戏设计及完整代码
  12. 视频编解码 GOP基本概念
  13. 海量数据荣获华为“中国政企数据存储优秀合作伙伴”金奖
  14. 程序员过中秋 | 如何用代码绘制月亮?
  15. 【交换机和路由器的区别】
  16. 【监听器篇】4.统计当前在线的用户人数
  17. linux内存测试工具memtest,内存检测工具Memtest使用方法(图文教程)
  18. android常用词汇带音标,下拉通知栏就能背单词,不知不觉懂了好多 - 贝壳单词 #Android...
  19. SSDT HOOK技术轻松让最新版冰刃、XueTr失效
  20. cocos-lua学习笔记(九)动作

热门文章

  1. 三菱Q系列PLC转以太网连接CHNet-Q实现以太网通信配置方法
  2. C语言——函数指针参数和函数指针
  3. 3D建模到底是个怎样的行业?月薪那么高,你害不害怕?
  4. 别让老板杀了你——中国职场冷思考
  5. chrome浏览器调用摄像头
  6. Windows 10 作为无线显示器无法被搜索到
  7. 将自己的域名重定向到某网站
  8. mysql 删除root用户_mysql误删root用户解决办法
  9. 工作簿无法保存html,将Excel工作簿保存为交互式Web页面文件的方法
  10. 小米面试题:讲一下Redis分布式锁