这两天正好做一个rsa加密,现在就总结一下其中的几个要点。

1.什么是rsa算法

RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开头字母拼在一起组成的。

RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战和质疑。

RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

下面就用一张图来说明:

2.php中RSA加密:

PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了。

非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。

工作过程如下,甲乙之间使用非对称加密的方式完成了重要信息的安全传输。

下载开源RSA密钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其中的bin目录,执行以下命令:

openssl genrsa -out rsa_private_key.pem 1024

openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

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

从上面看出通过私钥能生成对应的公钥,因此我们将私钥private_key.pem用在服务器端,公钥发放给Android跟iOS等前端

(2)、php中用生成的公钥、私钥进行加密解密,直接上代码

下面就通过一个例子来实现RSA加密的过程:

php rsa公钥加密,PHP RSA加密相关推荐

  1. RSA公钥加密和私钥加密的区别

    概念: rsa加密算法是一种非对称加密,对称加密是指加密解密都是使用同一个秘钥,非对称加密是两个秘钥进行加密解密.这两个秘钥公钥和私钥是成对出现的. 公钥就是可以公开的秘钥,私钥是私密的,一般只有一个 ...

  2. Postman报文进行加密之RSA公钥加密

    RSA公钥加密和私钥加密整个结构是一致的,<Postman报文进行加密之RSA+Bate64>中私钥做的签名,这里RSA公钥是进行加密. //--------RSA使用公钥对AES密码进行 ...

  3. 基于RSA和AES混合加密实现的加解密小工具

    基于RSA和AES混合加密实现的加解密小工具 闲来无事,用python的tkinter开发了一个基于RSA和AES混合加密的小小工具.总结一下使用到的知识点. 首先是核心的加解密部分. 采用混合加密的 ...

  4. RSA公钥加密与私钥解密算法

    首先是随机生成一个密钥对(一个公钥和一个私钥) package com.zy.demo1.secretTest;import lombok.extern.slf4j.Slf4j; import org ...

  5. Android RSA公钥加密和私钥解密方法

    一.公钥加密过程 /*** RSA公钥加密** @param str 加密字符串* @param publicKey 公钥* @return 密文* @throws Exception 加密过程中的异 ...

  6. asp版 vbscript RSA公钥加密 / 私钥解密 / 私钥签名 / 公钥验签(支持中文)分段加密解密

    最近有空在把自己的asp站点后端函数全部整理了下,在弄RSA的时候遇到了坑了,然后找到下面这位兄弟刚好发布的文章: https://blog.csdn.net/todaygods/article/de ...

  7. C#实现RSA公钥加密私钥解密、私钥加密公钥解密以及Pcks12、X509证书加解密、签名验签

    RSA的私钥签名公钥验签可以见 http://blog.csdn.net/starfd/article/details/51917916,所以这里就没提供对应代码,具体代码如下: using Org. ...

  8. RSA加密原理与RSA公钥加密系统、数字签名

    通过公钥加密系统,可以对传输于两个通信单位之间的消息进行加密,即使窃听者窃听到加密之后的消息,也不能对其破译. 1.RSA公钥加密原理 1.1 几个核心概念 公钥P与公钥函数P() 密钥S与密钥函数S ...

  9. 前端php解密,转发:RSA实现JS前端加密,PHP后端解密

    web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. RSA L ...

最新文章

  1. oracle cusor游标,ORACLE CURSOR 游标详解
  2. win7怎么启动对远程服务器的登陆,深度Win7旗舰版如何开启telnet服务使用远程登录...
  3. abs 不会整数 方法 溢出_在 Golang 中针对 int64 类型优化 abs()
  4. python可以干什么工作-python到底能做什么
  5. BAT批处理中的字符串处理详解(字符串截取)
  6. 搭建samba文件共享服务
  7. scrapy架构解析
  8. html之属性的定义
  9. lock 线程 java_JAVA多线程-基础Lock Condition 并发集合
  10. 构建路径_深度学习的幸福课堂构建从评价细则中找“路径”——基于深度学习的幸福课堂构建实践研究...
  11. 软件架构师的12项修炼——关系技能修炼(2)
  12. 一个有意思的VMP破解 旺旺吧上网经营管理系统
  13. Python PTA实验课 输出星期名缩写+字典的创建
  14. 使用PMT和IPMT在Excel中显示贷款付款
  15. java使用Aspose.pdf实现pdf转图片
  16. 互联网程序员普遍都是年薪百万嘛?
  17. 20年的嵌入式开发经验总结 !
  18. Serverless 技术架构 — 初探传说中的FAAS(Function as a Service)
  19. 3 个节省时间的 Python 技巧!
  20. 【互联网及其应用】第5章网络应用制作技术

热门文章

  1. 直接关闭计算机电源,退出Windows时,直接关闭计算机电源可能产生的后果是_____。...
  2. 三维软件转Unity的系统单位设置研究
  3. python 爬虫 使用requests模拟请求后台,返回为 空 问题
  4. java 给图片加马赛克_java处理图片--图片的缩放,旋转和马赛克化
  5. javafx-webview不支持indexeddb时怎么办
  6. BIMserver入门安装部署 - 环境搭建、数据导入及预览
  7. php开发在线考试系统
  8. EDIUS区域中添加马赛克的教程
  9. pima-indians-diabetes
  10. ADOBE ACROBAT XI PRO MULTI-XFORCE