RSA加解密过程

1.选择一对素数p,q

2.n=p*q

3.φ(n)=(n-1)(q-1)

4.找e(加密秘钥encrypt),使e与φ(n)互质且 1<e<φ(n)

5.计算d(解密密钥decrypt),d * e ≡ 1 mod φ(n), ≡为互余符号,即 (d * e) mod φ(n)= 1

6.公钥(e,n) 私钥(d,n)

7.设明文m,密文c,明文加密,密文c = m^e mod n

8.密文解密,明文m = c^d mod n

例:e=3 p=5 q=11 m=14

解:n=p*q=55 φ(n)=(n-1)(q-1)=40

3*d mod 40=1 d=27

公钥(n,e)=(55,3) 得到密文c=m^e mod 55=14^3 mod 55=49

私钥(n,d)=(55,27) 得到明文m=c^d mod 55=49^27 mod 55=14

RSA数字签名过程

RSA签名的过程是使用私钥对消息加密,验证过程是使用公钥进行解密验签

依据 ≡ m (mod n),以及杂凑计算 消息m 的摘要 h = H(m)。签名计算 s = mod n

h:消息m的短指纹。

s:签名者的签名

基本RSA签名生成 输入:RSA公钥(n, e) 、RSA私钥d、明文m

输出:签名s

过程:

1.计算 h = H(m),其中 H 是一个杂凑函数

2.计算 s = mod n

3.返回s

基本RSA签名验证 输入:(n,e),消息m,签名s

输出:验签通过?

过程:

1.计算 h = H(m)

2.由于验签是计算 s = mod n,则 = mod n ≡ h mod n,则 h’= mod n

3.若 h’= h 验签通过

例:e=5 p=5 q=7 h=2

解:n=p*q=35 φ(n)=(n-1)(q-1)=24

5*d mod 24=1 d=5

私钥(n,d)=(35,5) 得到签名s=h^d mod 35=2^5 mod 35=32

公钥(n,e)=(55,3) 验证签名h=s^e mod 35=32^5 mod 35=2

用RSA进行加解密和数字签名相关推荐

  1. RSA的加解密过程--(转自CSDN,学习用)

    RSA的加解密过程  public void StartDemo()  {   //RSA的加解密过程:   //  有 rsa1 和 rsa2 两个RSA对象.   //  现在要 rsa2 发送一 ...

  2. RSA算法加解密的C语言实现

    RSA算法加解密的C语言实现 一. 实现的功能 二. 源代码 一. 实现的功能 用户输入明文 自动随机生成较大的数p和q,并对它们进行素性检测,检测成功之后,程序继续 计算Φ(n)的值,并求出它的所有 ...

  3. rsa大数加密c语言,C语言:基于OpenSSL-RSA实现RSA非对称加解密

    关于OpenSSL的介绍和安装在此不多赘述,可以在网上找到很多相关资料,各位感兴趣可以去了解下(自觉对OpenSSL开源库只是初级使用阶段,也就不在此"秀下限"了),直接进入主题, ...

  4. python RSA非对称加解密模块[M2Crypto]

    python 实现rsa对称加解密目前有三个库:rsa.pycryptodome.M2Crypto 前两个库只能实现公钥加密私钥解密,M2Crypto可以实现公私钥互相加解密 M2Crypto的安装: ...

  5. 前后端RSA互相加解密、加签验签、密钥对生成(Java)

    目录 一.序言 二.关于PKCS#1和PKCS#8格式密钥 1.简介 2.区别 二.关于JSEncrypt 三.关于jsrsasign 四.前端RSA加解密.加验签示例 1.相关依赖 2.crypto ...

  6. golang RSA base64 加解密 签名验签

    1.秘钥.加密/签名字符串加密的格式 目前主要见到有hex及base64 (1)hex 针对hex的加解密 import ("encoding/hex" ) hex.DecodeS ...

  7. 使用 RSA 进行加解密

    在某些业务中我们可能为了要保证数据传输的安全性,需要对一些数据进行加密传输 在这里我建议使用RSA非对称加密进行加密,可以将公钥存储在web端,私钥存储在serve端 注意:使用RSA加密的时候需要注 ...

  8. RSA双向加解密(公钥加密-私钥解密;私钥加密-公钥解密)

    非对称加密算法中,提供一个公钥一个私钥.一般情况下,采用公钥加密.私钥解密的方式. 假设有这样一个场景:服务A与服务B需要通信,通信内容为了安全需要进行加密传输,并且服务A与服务B不能互相持有对方的钥 ...

  9. RSA算法加解密过程全解析

    不同于传统的对称加密算法体系,非对称公私钥密码系统中的加密密钥和解密密钥是相互分开的,加密密钥用于公开给别人加密,而只有持有解密密钥的人才能对信息进行解密.1976年诞生过不少非对称密码算法,但是RS ...

最新文章

  1. Linux配置协同工作目录,Linux学习二:文件权限与目录配置
  2. 0x80070659系统策略禁止这个安装 vc_教你一招,解决所有系统丢失DLL文件的问题!...
  3. linux 64位 php memcached 扩展,LINUX系统安装PHP的memcached扩展
  4. 波卡生态DAO基础设施完成150万美元战略融资
  5. 使用shell写简单的计算机
  6. Modern CMake 翻译 2.1 变量和缓存
  7. hibernate中session 与JDBC中 connection分析
  8. linux awk使用详解
  9. Vmware里安装 Ubuntu16.04 + 安装Vmware-tools
  10. PDF阅读器背景设置为护眼豆沙色(福昕)
  11. json类型大小 mysql_MySQL数据类型 - JSON数据类型 (1)
  12. 微博媒体碎片装订版-Arrange01
  13. 二、C++反作弊对抗实战 (进阶篇 —— 2.作弊器中常见断链隐藏DLL方法)
  14. 神经网络——最易懂最清晰的一篇文章
  15. Python-内置函数
  16. [OpenGL] shadow mapping(实时阴影映射)
  17. 【STM32】基于正点原子『探索者』开发板的烧录
  18. 配件查询网站用java,基于jsp的配件管理系统-JavaEE实现配件管理系统 - java项目源码...
  19. ASP.NET入门篇【项目实战】打造一个自己的相册(二)登录模块
  20. 云+小游戏,会成为5G时代的抖音吗?​

热门文章

  1. 明日书苑:毛笔字12个书法落款细节,可以看出一个人的书法水准!
  2. win10修改中文名为英文名完整版keilmdk安装修改中文名
  3. 怎么把http图片改成背景图HTML,web前端:将图片设置成页面的背景-网页页面设置...
  4. 为什么越来越多的人消失在朋友圈?(引人深思)
  5. svn密码忘记解决方案
  6. CMOS图像传感器 NIR-近红外的飞速发展
  7. Excel求解线性回归问题
  8. ar面部识别_增强现实(AR)结合人脸识别技术在手机产品的应用
  9. Eclipse项目文件介绍
  10. 为什么很多人学完了Java,依旧找不到工作?