RSA加解密过程详解

RSA加密是一种非对称加密,由一对密钥来完成加解密过程,分别为公钥和私钥。

RSA的加密过程如下:

(1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。

(2)A传递自己的公钥给B,B用A的公钥对消息进行加密。

(3)A接收到B加密的消息,利用A自己的私钥对消息进行解密。

在这个过程中,只有2次传递过程,第一次是A传递公钥给B,第二次是B传递加密消息给A,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行解密,防止了消息内容的泄露。

RSA的安全基于大数分解的难度。

首先我们先介绍一个概念:
素数:质数,只有两个正因数(1和自己)的自然数。
互质数:互素数,“公约数只有1的两个数,叫做互质数。”两个质数一定是互质数;一个质数如果不能整除另一个合数,这两个数为互质数;1不是质数也不是合数;相邻的两个自然数互质;相邻的两个奇数互质;大数是质数的两个数互质;小数是质数,大数不是小数的倍数的两个数互质;两个数都是合数,小数所有的质因数,都不是大数的约数,则这两个数互质。

求逆元:
求13模35的逆元
35=2x13+9 9=1x35-2x13
13=1x9+4 4=1x13-1x9=1x13-1x(1x35-2x13)
=-1x35+3x13
9=2x4+1 1=1x9-2x4
=1x35-2x13-2x(-1x35+3x13)
=3x35-8x13
13模35的逆元为(-8)mod35=27

5模26的逆元
26=5x5+1 1=1x26-5x5
5模26的逆元为(-5)mod26=21

11模26的逆元
26=2x11+4 4=1x26-2x11
11=2x4+3 3=1x11-2x(1x26-2x11)
=5x11-2x26
4=1x3+1 1=1x(1x26-2x11)-1x(5x11-2x26)
=3x26-7x11
11模26的逆元为(-7)mod26=19

3模220的逆元
220=73x3+1 1=1x220-73x3

3模220的逆元为(-73)mod220=147

给大家举个例子:
假如p=11,q=23,加密密钥e=3,求解密密钥以及明文165对应的密文。

n=pq=11x23=253
x=(p-1)(q-1)=10x22=220
显然gcd(3,220)=1
求解密密钥,解密密钥为3模220的逆元,即147
密文=165^3mod253=110

对于密文110,明文=110^147mod253=165

下面有详细的解题过程哦:
计算x^r mod n的快速算法:
1)a=x,b=r,c=1
2)如果b=0,则输出结果c,结束
3)如果b mod 2!=0,则转到第五步
4)b=b/2,a=(axa)mod n,转第三步
5)b=b-1,c=(cxa)mod n,转第二步

过程

RSA加解密过程详解相关推荐

  1. RSA 加解密算法详解

    RSA 为"非对称加密算法".也就是加密和解密用的密钥不同. (1)乙方生成两把密钥(公钥和私钥).公钥是公开的,任何人都可以获得,私钥则是保密的. (2)甲方获取乙方的公钥,然后 ...

  2. ECC椭圆曲线加解密原理详解(配图)

    ECC椭圆曲线加解密原理详解(配图) 本文主要参照:ECC加密算法入门介绍及 ECC椭圆曲线详解(有具体实例) 前言: 椭圆曲线(ECC)加密原理跟RSA加解密原理比起来,可真是晦涩难懂.拜读了Kal ...

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

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

  4. Java类的加载过程详解 面试高频!!!值得收藏!!!

    受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话: 八小时内谋生活,八小时外谋发展. 望别日与 ...

  5. RSA算法原理——(3)RSA加解密过程及公式论证

    上期(RSA简介及基础数论知识)为大家介绍了:互质.欧拉函数.欧拉定理.模反元素 这四个数论的知识点,而这四个知识点是理解RSA加密算法的基石,忘了的同学可以快速的回顾一遍. 一.目前常见加密算法简介 ...

  6. 中yeti不能加载_第二十章_类的加载过程详解

    类的加载过程详解 概述 在 Java 中数据类型分为基本数据类型和引用数据类型.基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照 Java 虚拟机规范,从 Class 文件到加载到内 ...

  7. 类加载顺序及加载过程详解

    转自: 类加载顺序及加载过程详解 下文笔者讲述类的加载顺序及加载过程的详解说明,如下所示 java创建对象的方式分为以下四种 new 反射克隆反序列化 class对象获取的方式分享 //没有完成初始化 ...

  8. RSA加解密、验解签区别

    一.RSA加密简介 RSA加密是一种非对称加密.可以在不直接传递密钥的情况下,完成解密.这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险.是由一对密钥来进行加解密的过程,分别称为公钥和私 ...

  9. AES加解密算法详解

    0 AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES).AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准. 根据使用的密码长度,AES最常见的有3种方案,用以适应 ...

最新文章

  1. 系统异常设计规范与原则
  2. 初学python-字符串中引号的使用、input简介、强制类型转换、加减乘除简写、条件判断...
  3. bzoj2746: [HEOI2012]旅行问题
  4. python异常处理及内置模块
  5. TCP端口状态 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT详解,以及三次握手,滑动窗口
  6. android自定义游戏闯关图,Android自定义View(四) -- Canvas
  7. 纪中C组模拟赛总结(2019.7.5)
  8. python中reshape_Numpy之reshape()使用详解
  9. android服务器接口测试,使用Retrofit和Mockito进行可靠的Android API测试
  10. 最普通IT男-苦逼coder杂谈
  11. 禅道的下载和安装教程(Linux版)
  12. 双电阻差分电流采样_绝缘采样
  13. java 复制网页文字_网页文字复制不了?你这样做,全网文字任你免费复制!快get!...
  14. 嵌入式培训课程哪里好?嵌入式开发学习路线
  15. 菠萝粉的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. VSCode选择远程服务器的虚拟环境
  17. 悲剧的与幽默的人生态度——宗白华
  18. 深入理解JVM03--判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用
  19. 说我菜?那好,我用Python制作电脑与手机游戏脚本来赢你
  20. 反序列化漏洞-JAVA

热门文章

  1. Java 遍历 Map 的几种方式
  2. python使用py2neo操作neo4j
  3. Android应用离线中文语音识别PocketSphinx (免费哦~)
  4. 嵌入式软件开发就业面试题。2022最新,最全总结。
  5. 医疗器械管理系统-医疗器械进销存管理系统-盘谷医疗
  6. 【一图看全】北京新基建行动方案中的30大要点
  7. 导电滑环工作原理及部件解析
  8. 学会这几个软文编辑技巧,让你每天都早下班
  9. python反爬与反反爬常用知识点
  10. 钉钉签到后可以删除吗?钉钉签到考勤破解