6.RSA算法及其数字签名

6.1 RSA算法

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamir和Len Adleman在美国麻省理工学院开发的。RSA取名来自开发者的名字。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分不容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

6.2 RSA数字签名

首先产生密钥,过程如下:

(1)随机产生两个等长度为K/2位的素数P和Q

(2)然后计算公钥publicKey=P*Q;(publicKey 是k位的长度)

(3)随机产生一个加密密钥keyE, 2<=keyE<=中(n)-1其GCD(keyE,中(n))=1;注意这是保证解密密钥keyE *keyD mod中(n)=1 有解的充要条件,中(n)称为 n的欧拉函数,值为:中(n)=(P-1)*(Q-1)

(4)求解解密密钥keyD=keyE-1 mod (n) ,keyE-1 为解密密钥keyD的逆元,此公式原方程为(keyE*keyD mod (n)=1)

由此公钥,加密密钥,解密密钥全部产生。其次对明文加密或对密文进行解密,过程如下:

(1)加密: C = Mkey^E mod publicKey; 其中M表示明文,C表示密文。

(2)解密: M = Ckey^D mod publicKey;其中M表示明文,C表示密文。

(3)验证签名算法(RSA 解密、对消息摘要计算和比较)

验证签名算法包括两步:RSA解密得签名者的消息摘要,验证者对原消息计算摘要,比较两个消息摘要。验证签名的过程输入为消息,签名者的公钥,签名;输出为验证的结果,即是否是正确的签名。

6-1、RSA数字签名

举个例子:

  1. 找到两个质数P Q

P=3,Q=11

  1. 计算公共模数N

N=P*Q=3*11=33

3、 欧拉函数

φ(N) = (P-1)(Q-1) = 2 * 10 = 20

φ(N) = 20

4、计算公钥E

1 < E < φ(N)

1 <E < 20

E 的取值范围 {3, 7, 9, 11, 13, 17, 19}

E的取值必须是整数, E 和 φ(N) 必须是互质数

我们取最小的值 E =3

3 和 φ(N) =20 互为质数,满足条件。

5、计算私钥D

E * D % φ(N) = 1

3 * D  % 20 = 1

根据上面可计算出 D = 7

6、公钥加密

加密一个比较小的数字 M = 2

公式:C = M**E mod N

M = 2

E = 3

N = 33

C = 2**3 % 33 = 8

明文 “2” 经过 RSA 加密后变成了密文 “8”。

7、私钥解密

M =C**D mod N

C = 8

D = 7

N = 33

M = 8**7 % 33

8 * 8 * 8 * 8 * 8 * 8 * 8=2097152

8 * 8 * 8 * 8 * 8 * 8 * 8 % 33 = 2

密文 “8” 经过 RSA 解密后变成了明文 2。

数字签名算法的原理与设计相关推荐

  1. verilog hdl数字集成电路设计原理与应用_数字IC设计经典书籍推荐

    数字IC设计流程很复杂,从前端到后端,也有很多职位.在这里整理了个数字IC各个环节的经典必读书籍.市面上的书籍种类纷繁复杂,这里每种只推荐两本左右,如果需要,建议知识类的书籍还是购买正版,尊重作者,也 ...

  2. 真题详解(数字签名算法)-软件设计(七十八)

    真题详解(有限自动机)-软件设计(七十七)https://blog.csdn.net/ke1ying/article/details/130748759 可用于数字签名算法的是_____. 答案:非对 ...

  3. 南通大学信息科学技术学院818数字系统原理与设计真题分布情况

    南通大学818数字原理与系统设计真题 南通大学信息科学技术学院-学硕信息与通信工程,专硕02集成电路工程,专属03通信工程 资料介绍  资料为21级某学长本人(在读)当时考研做的笔记资料以及后期辅导学 ...

  4. ECDSA数字签名算法

    一.ECDSA概述 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟.ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准. 它 ...

  5. RSA算法和RSA数字签名算法

    一.引言 随着网络技术的飞速发展,信息安全性已成为亟待解决的问题.公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中 ...

  6. 国际 数字签名算法介绍和区别

    数字签名是一个带有密钥的消息摘要算法,这个密钥包括了公钥和私钥,用于验证数据完整性.认证数据来源和抗否认,遵循OSI参考模型.私钥签名和公钥验证.也是非对称加密算法和消息摘要算法的结合体,常见的数字签 ...

  7. [以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用

    数字签名算法在Ethereum中的应用不少,目前已知至少有两处:一是在生成每个交易(Transaction, tx)对象时,对整个tx对象进行数字签名:二是在共识算法的Clique算法实现中,在针对新 ...

  8. HDLBits答案(8)_Verilog半加器、全加器和行波进位加法器原理与设计

    半加器.全加器和行波进位加法器原理与设计 HDLBits链接 半加器 定义: 半加器用于计算2个单比特二进制数a与b的和,输出结果sum(s)和进位carry(c).在多比特数的计算中,进位c将作为下 ...

  9. 用matlab生成ASK FSK PSK,通信原理课程设计(matlab实现ASK FSK PSK).doc

    通信原理课程设计(matlab实现ASK FSK PSK) PAGE PAGE 3 <通信原理> 课程设计 题 目 数字调制技术的仿真实现及性能研究 系 (部) 专业(班级) 设 计 者 ...

最新文章

  1. Linux epoll
  2. 暴力+构造 Codeforces Round #283 (Div. 2) C. Removing Columns
  3. 常用的图像特征颜色特征、纹理特征、形状特征、空间关系特征
  4. 推荐ApacheCN开源的一个机器学习路线图
  5. c语言的程序框图怎么写,C语言课程设计————写下流程图! 谢谢
  6. marc数据个人心得
  7. 关于使用两个GTP/GTX出现[DRC RTSTAT-1]error([route 35-54] critical warning)的问题详解
  8. file.getpath_Java中File的getPath(),getCanonicalPath()和getAbsolutePath()之间的区别...
  9. 关于LRU缓存简单记录以及代码补全。
  10. php后台和ios网络请求,iOS网络 POST通过JSON传数据到后台
  11. DOCKER功能练习
  12. 你会几种“复制”文本的方式?----浅谈I/O流
  13. 撰写MLA格式的毕业论文,需留意下边几个文件格式标准
  14. [乡土民间故事_徐苟三传奇]第四回_张员外受骗摔新锅
  15. xcode10及iOS12问题
  16. 释迦牟尼佛和阿弥陀佛有何区别?
  17. mysql和mongodb查询性能测试_MongoDB 模糊查询,及性能测试
  18. 头条自媒体运营秘籍,坚持下去你就可以打败90%的人
  19. Docker MSSQL 添加读取 MDF 文件
  20. Junit 实例精讲基础教程(一) 使用@Ignore注解跳过单元测试方法的执行

热门文章

  1. background: #ff0000 url(/i/eg_bg_03.gif) ; 图片 + 颜色
  2. 避免和预防死锁的方式
  3. 2023免费版电脑视频剪辑软件会声会影
  4. iCloud学习笔记
  5. 【可视化工具】二维矩形装箱可视化 + JS-Canvas实现
  6. iView Table 前端分页
  7. 购物车模块设计及实现(SSH架构)
  8. HTML入门(javaee必经之路)-任亮-专题视频课程
  9. mysql中engine是什么意思_请问mysql中ENGINE=MyISAM代表什么意思?
  10. python实现智能语音翻译