RSA加密算法详解及例题

RSA加密算法详解及例题这是我自己在学习RSA加密算法的时候自己整理的笔记,如需转载请注明出处RSA加密算法我这里就不对RSA的发明背景做介绍了,你只要知道RSA加密算法是非常非常重要的加密算法,放在现在的时代亦是如此。RSA加密算法的安全性是基于对极大整数做因数分解的困难。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。例如:(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。(2)甲方获取乙方的公钥,然后用它对信息加密

大家好,又见面了,我是你们的朋友全栈君。

这是我自己在学习RSA加密算法的时候自己整理的笔记,如需转载请注明出处

RSA加密算法

我这里就不对RSA的发明背景做介绍了,你只要知道RSA加密算法是非常非常重要的加密算法,放在现在的时代亦是如此。

RSA加密算法的安全性是基于对极大整数做因数分解的困难
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。例如:
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密
公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。

密钥生成过程

1、 随机找两个质数 P 和 Q ,P 与 Q 越大,越安全;
2、 计算他们的乘积 n = P * Q
3、 计算 n 的欧拉函数 φ(n):φ(n) = φ(P * Q)= φ(P – 1)φ(Q – 1) = (P – 1)(Q – 1)
4、 随机选择一个整数 e,条件是 1< e < φ(n),且 e 与 φ(n) 互质
5、 计算e对于 φ(n) 的模反元素d,可以使得 ed 除以 φ(n) 的余数为 1
( 1<d<e,且e
d mod φ(n) = 1 ) 即:d=e^-1 ( mod φ(n) )
6、 公钥(n,e);私钥(n,d);

RSA使用公共指数e和私有指数d。指数e是每个人都知道的公钥(e, N)的一部分。使用公钥e加密的消息只能使用私钥d解密

加解密过程

c:密文
m:明文
加密:c = m^e mod N
解密:m = c^d mod N

例题

例题:在RSA加密体制中, 已知素数 p = 7, q = 11, 公钥 e = 13, 试计算私钥 d 并给出对明文 m = 5 的加密,求其密文. 已知密文 c = 15, 求其明文

解:
n=pq=77
φ(n)=(p-1)(q-1)=60
e
d≡1 mod φ(n)
即13d mod 60 = 1
解得:d = 37
公钥(n,e)=(77,13)
密文c = m^e mod n = 5^13 mod 77 = 26
私钥(n,d)=(77,37)
明文m = c^d mod n = 15^37 mod 77 = 71

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131267.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CACL高校AI算法联赛S2赛季第一轮顺利结束,第二轮即将开始!

    CACL高校AI算法联赛S2赛季第一轮顺利结束,第二轮即将开始!

    2025年12月5日
    2
  • angular 路由懒加载_angular路由

    angular 路由懒加载_angular路由angular8路由懒加载在angular中路由即能加载组件又能加载模块,而我们说的懒加载实际上就是加载模块,目前还没有看到懒加载租价的例子。加载组件使用的是component关键字加载模块则是使用loadChildren关键字例子代码父模块路由文件import{NgModule}from’@angular/core’;import{Routes,RouterMo…

    2022年10月6日
    4
  • 记录下关于调用RAR解压缩的问题

    记录下关于调用RAR解压缩的问题

    2021年9月15日
    53
  • 计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小[通俗易懂]

    计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小[通俗易懂]很多人都知道怎麽设置电脑桌面,可真正找到适合自己屏幕的可能很少,图片或大或小,小编为大家分享了设置桌面壁纸大小的方法,下面大家跟着小编一起来了解一下吧。设置桌面壁纸大小方法先查看自己电脑屏幕分辨率,方法:依次打开控制面板\外观和个性化\显示\屏幕分辨率。查看图片的大小:单击图片,将鼠标放在图片图标上,就能看到尺寸。双击图片,用windows照片查看器打开,点击”打开“,选择画图。假设屏幕分辨率:…

    2022年5月15日
    169
  • Java 技术体系简介

    Java 技术体系简介Java技术包含的所有内容:1、Java技术体系2、Java一次编译,到处运行Java技术的核心就是Java虚拟机,因为所有的Java程序都在虚拟机上运行。Java程序的运行需要Java虚拟机、JavaAPI和JavaClass文件的配合。Java虚拟机实例负责运行一个Java程序。当启动一个Java程序时,一个虚拟机实例就诞生了。当程序结束,这个虚拟机实例也就消亡。Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了

    2022年7月8日
    20
  • idea快捷键和vscode快捷键对比

    idea快捷键和vscode快捷键对比之前一直写后端,最近用vscode写vue,两边的快捷键差异还挺大的,怎么感觉webstorm也挺香呢【手动狗头】快捷键名称IntelliJIDEAVisualStudioCode复制一行Ctrl+CCtrl+C剪切一行Ctrl+XCtrl+X删除一行Ctrl+YCtrl+Shift+K向下复制行Ctrl+DAlt+Shift+⬇上下移动行Alt+Shift+⬆⬇Alt+⬆⬇向

    2022年5月31日
    137

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号