这段时间在做服务器证书的功能,先前对证书的了解比较零碎,正好趁这次机会将证书的内容有个系统的了解以及生成。

首先需要了解证书的算法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算法详解与举例相关推荐

  1. RSA算法详解及攻击原理分析-附攻击范例

    文章目录 RSA算法 1.算法背景 1.1 公钥密码 1.2 公钥体制数学基础 1.3 公钥通信的流程 2.RSA算法数学基础 2.1 RSA相关的数论基础 2.2 欧拉定理及推广 3. RSA算法构 ...

  2. (*长期更新)软考网络工程师学习笔记一—RSA算法详解

    RSA算法是一种非对称加密算法,适合进行数字签名和密钥交换运算. 这里总结下RSA算法的步骤: 一.选两个较大的质数p和q,p≠q,质数即除了1和其本身以外不被其它自然数所整除的数,且大于1. 比如选 ...

  3. 信息安全-5:RSA算法详解(已编程实现)[原创]

    转发注明出处:http://www.cnblogs.com/0zcl/p/6120389.html 背景介绍 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加 ...

  4. RSA算法详解及C语言实现

    1.什么是RSA RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年 ...

  5. 层次聚类(Hierarchical Clustering)——CURE算法详解及举例

    1 CURE聚类概述 绝大多数聚类算法或者擅长处理球形和相似大小的聚类.或者在存在孤立点时变得比较脆弱.CURE采用了一种新颖的层次聚类算法.该算法选择基于质心和基于代表对象方法之间的中间策略.它不同 ...

  6. 层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例

    1 BIRCH概述 BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)的主要动机是两个方面,一是处理大数据集,二是对 ...

  7. 9. PKI - 三种密钥交换算法详解(RSA DHE ECDHE)及他们在SSL/TLS协议中的应用

    9. PKI - 三种密钥交换算法详解(RSA& DHE& ECDHE)及他们在SSL/TLS协议中的应用 RSA密钥交换算法 DHE密钥交换算法 ECDHE密钥交换算法 参考 密钥交 ...

  8. 【强化学习】Policy Gradient算法详解

    DeepMind公开课https://sites.google.com/view/deep-rl-bootcamp/lectures David Silver教程 http://www0.cs.ucl ...

  9. python实现非对称加密算法_Python3非对称加密算法RSA实例详解

    本文实例讲述了Python3非对称加密算法RSA.分享给大家供大家参考,具体如下: python3 可以使用 Crypto.PublicKey.RSA 和 rsa 生成公钥.私钥. 其中 python ...

  10. LDA主题模型(算法详解)

    LDA主题模型(算法详解) http://blog.csdn.net/weixin_41090915/article/details/79058768?%3E 一.LDA主题模型简介 LDA(Late ...

最新文章

  1. 34.angularJS的{{}}和ng-bind
  2. C++中重载下标运算符[]
  3. C#连接mysql数据库的一个例子和获取本机IP的方法
  4. 【译】Why Decentralized AI Matters Part II: Technological Enablers
  5. mysql为什么添加索引_当我添加新索引时,为什么MySQL中索引的基数保持不变?
  6. IBatis 映射文件 sql 中大于、小于等符号转义
  7. 滴滴回应上班高峰期大范围崩溃 :系统异常 订单差额部分统一退还
  8. Oracle JDBC配置
  9. linux 串口是否可写,串口编程可写入不能读取 怎么解决
  10. mysql sql security_MySQL笔记-definer与SQL SECURITY
  11. Windows NT 内核基本结构
  12. swift声明属性为某个类型同时遵循某协议
  13. 首条作品获8w推荐,视频号近期的创作趋势是什么?
  14. 【MySQL从入门到精通】【高级篇】(二十五)EXPLAIN中ref、rows、filtered、Extra字段的剖析
  15. 今日头条 2018 AI Camp 视频面试
  16. SQL AUTO INCREMENT
  17. R新建空矩阵循环放数据
  18. java文件加密解密实验报告_《网络信息安全技术》_实验报告_破译vigenamp#232;re_密码加密的密文...
  19. Photoshop——APP设计规范
  20. 福昕PDF阅读器:拒绝瞎忙,拥抱高效

热门文章

  1. Java 生成视频缩略图(ffmpeg)
  2. 陈莉君教授: 回望踏入Linux内核之旅(下篇)
  3. 三维模型楼盘展示的功能及优点
  4. 【POJ 2719 --- Faulty Odometer】
  5. 依赖缺失问题 CS0246 未能找到类型或命名空间名“SqlConnection”(是否缺少 using 指令或程序集引用?) CS1069 未能在命名空间“System.Data.SqlClient
  6. spark编程ERROR01——java.lang.NullPointerException
  7. 修改手机屏幕刷新率_手机屏幕刷新率,真是越高越好吗?
  8. 咖啡师学习需要注意什么
  9. 公司建站域名需要多少钱?
  10. Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding