RSA算法详解与举例
这段时间在做服务器证书的功能,先前对证书的了解比较零碎,正好趁这次机会将证书的内容有个系统的了解以及生成。
首先需要了解证书的算法RSA算法。RSA算法非常简单,概述如下:
找两素数p和q 取n=p*q 取t=(p-1)*(q-1) 取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1) 取d*e%t==1
这样最终得到三个数: n d e
设消息为数M (M <n) 设c=(M**d)%n就得到了加密后的消息c 设m=(c**e)%n则 m == M,从而完成对c的解密。 注:**表示次方,上面两式中的d和e可以互换。
在对称加密中: n d两个数构成公钥,可以告诉别人; n e两个数构成私钥,e自己保留,不让任何人知道。 给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。 别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。
RSA的安全性在于对于一个大数n,没有有效的方法能够将其分解 从而在已知n d的情况下无法获得e;同样在已知n e的情况下无法 求得d。
实践:
接下来我们来一个实践,看看实际的操作: 找两个素数: p=47 q=59 这样 n=p*q=2773 t=(p-1)*(q-1)=2668 取e=63,满足e<t并且e和t互素 用perl简单穷举可以获得满主 e*d%t ==1的数d: C:\Temp>perl -e "foreach $i (1..9999){ print($i),last if $i*63&68==1 }" 847 即d=847
最终我们获得关键的 n=2773 d=847 e=63
取消息M=244我们看看
加密:
c=M**d%n = 244**847'73 用perl的大数计算来算一下: C:\Temp>perl -Mbigint -e "print 244**847'73" 465 即用d对M加密后获得加密信息c=465
解密:
我们可以用e来对加密后的c进行解密,还原M: m=c**e%n=465**63'73 : C:\Temp>perl -Mbigint -e "print 465**63'73" 244 即用e对c解密后获得m=244 , 该值和原始信息M相等。
RSA算法详解与举例相关推荐
- RSA算法详解及攻击原理分析-附攻击范例
文章目录 RSA算法 1.算法背景 1.1 公钥密码 1.2 公钥体制数学基础 1.3 公钥通信的流程 2.RSA算法数学基础 2.1 RSA相关的数论基础 2.2 欧拉定理及推广 3. RSA算法构 ...
- (*长期更新)软考网络工程师学习笔记一—RSA算法详解
RSA算法是一种非对称加密算法,适合进行数字签名和密钥交换运算. 这里总结下RSA算法的步骤: 一.选两个较大的质数p和q,p≠q,质数即除了1和其本身以外不被其它自然数所整除的数,且大于1. 比如选 ...
- 信息安全-5:RSA算法详解(已编程实现)[原创]
转发注明出处:http://www.cnblogs.com/0zcl/p/6120389.html 背景介绍 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加 ...
- RSA算法详解及C语言实现
1.什么是RSA RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年 ...
- 层次聚类(Hierarchical Clustering)——CURE算法详解及举例
1 CURE聚类概述 绝大多数聚类算法或者擅长处理球形和相似大小的聚类.或者在存在孤立点时变得比较脆弱.CURE采用了一种新颖的层次聚类算法.该算法选择基于质心和基于代表对象方法之间的中间策略.它不同 ...
- 层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例
1 BIRCH概述 BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)的主要动机是两个方面,一是处理大数据集,二是对 ...
- 9. PKI - 三种密钥交换算法详解(RSA DHE ECDHE)及他们在SSL/TLS协议中的应用
9. PKI - 三种密钥交换算法详解(RSA& DHE& ECDHE)及他们在SSL/TLS协议中的应用 RSA密钥交换算法 DHE密钥交换算法 ECDHE密钥交换算法 参考 密钥交 ...
- 【强化学习】Policy Gradient算法详解
DeepMind公开课https://sites.google.com/view/deep-rl-bootcamp/lectures David Silver教程 http://www0.cs.ucl ...
- python实现非对称加密算法_Python3非对称加密算法RSA实例详解
本文实例讲述了Python3非对称加密算法RSA.分享给大家供大家参考,具体如下: python3 可以使用 Crypto.PublicKey.RSA 和 rsa 生成公钥.私钥. 其中 python ...
- LDA主题模型(算法详解)
LDA主题模型(算法详解) http://blog.csdn.net/weixin_41090915/article/details/79058768?%3E 一.LDA主题模型简介 LDA(Late ...
最新文章
- 34.angularJS的{{}}和ng-bind
- C++中重载下标运算符[]
- C#连接mysql数据库的一个例子和获取本机IP的方法
- 【译】Why Decentralized AI Matters Part II: Technological Enablers
- mysql为什么添加索引_当我添加新索引时,为什么MySQL中索引的基数保持不变?
- IBatis 映射文件 sql 中大于、小于等符号转义
- 滴滴回应上班高峰期大范围崩溃 :系统异常 订单差额部分统一退还
- Oracle JDBC配置
- linux 串口是否可写,串口编程可写入不能读取 怎么解决
- mysql sql security_MySQL笔记-definer与SQL SECURITY
- Windows NT 内核基本结构
- swift声明属性为某个类型同时遵循某协议
- 首条作品获8w推荐,视频号近期的创作趋势是什么?
- 【MySQL从入门到精通】【高级篇】(二十五)EXPLAIN中ref、rows、filtered、Extra字段的剖析
- 今日头条 2018 AI Camp 视频面试
- SQL AUTO INCREMENT
- R新建空矩阵循环放数据
- java文件加密解密实验报告_《网络信息安全技术》_实验报告_破译vigenamp#232;re_密码加密的密文...
- Photoshop——APP设计规范
- 福昕PDF阅读器:拒绝瞎忙,拥抱高效
热门文章
- Java 生成视频缩略图(ffmpeg)
- 陈莉君教授: 回望踏入Linux内核之旅(下篇)
- 三维模型楼盘展示的功能及优点
- 【POJ 2719 --- Faulty Odometer】
- 依赖缺失问题 CS0246	未能找到类型或命名空间名“SqlConnection”(是否缺少 using 指令或程序集引用?) CS1069 未能在命名空间“System.Data.SqlClient
- spark编程ERROR01——java.lang.NullPointerException
- 修改手机屏幕刷新率_手机屏幕刷新率,真是越高越好吗?
- 咖啡师学习需要注意什么
- 公司建站域名需要多少钱?
- Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding