数字签名算法的原理与设计
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数字签名
举个例子:
- 找到两个质数P Q
P=3,Q=11
- 计算公共模数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。
数字签名算法的原理与设计相关推荐
- verilog hdl数字集成电路设计原理与应用_数字IC设计经典书籍推荐
数字IC设计流程很复杂,从前端到后端,也有很多职位.在这里整理了个数字IC各个环节的经典必读书籍.市面上的书籍种类纷繁复杂,这里每种只推荐两本左右,如果需要,建议知识类的书籍还是购买正版,尊重作者,也 ...
- 真题详解(数字签名算法)-软件设计(七十八)
真题详解(有限自动机)-软件设计(七十七)https://blog.csdn.net/ke1ying/article/details/130748759 可用于数字签名算法的是_____. 答案:非对 ...
- 南通大学信息科学技术学院818数字系统原理与设计真题分布情况
南通大学818数字原理与系统设计真题 南通大学信息科学技术学院-学硕信息与通信工程,专硕02集成电路工程,专属03通信工程 资料介绍 资料为21级某学长本人(在读)当时考研做的笔记资料以及后期辅导学 ...
- ECDSA数字签名算法
一.ECDSA概述 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟.ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准. 它 ...
- RSA算法和RSA数字签名算法
一.引言 随着网络技术的飞速发展,信息安全性已成为亟待解决的问题.公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中 ...
- 国际 数字签名算法介绍和区别
数字签名是一个带有密钥的消息摘要算法,这个密钥包括了公钥和私钥,用于验证数据完整性.认证数据来源和抗否认,遵循OSI参考模型.私钥签名和公钥验证.也是非对称加密算法和消息摘要算法的结合体,常见的数字签 ...
- [以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用
数字签名算法在Ethereum中的应用不少,目前已知至少有两处:一是在生成每个交易(Transaction, tx)对象时,对整个tx对象进行数字签名:二是在共识算法的Clique算法实现中,在针对新 ...
- HDLBits答案(8)_Verilog半加器、全加器和行波进位加法器原理与设计
半加器.全加器和行波进位加法器原理与设计 HDLBits链接 半加器 定义: 半加器用于计算2个单比特二进制数a与b的和,输出结果sum(s)和进位carry(c).在多比特数的计算中,进位c将作为下 ...
- 用matlab生成ASK FSK PSK,通信原理课程设计(matlab实现ASK FSK PSK).doc
通信原理课程设计(matlab实现ASK FSK PSK) PAGE PAGE 3 <通信原理> 课程设计 题 目 数字调制技术的仿真实现及性能研究 系 (部) 专业(班级) 设 计 者 ...
最新文章
- Linux epoll
- 暴力+构造 Codeforces Round #283 (Div. 2) C. Removing Columns
- 常用的图像特征颜色特征、纹理特征、形状特征、空间关系特征
- 推荐ApacheCN开源的一个机器学习路线图
- c语言的程序框图怎么写,C语言课程设计————写下流程图! 谢谢
- marc数据个人心得
- 关于使用两个GTP/GTX出现[DRC RTSTAT-1]error([route 35-54] critical warning)的问题详解
- file.getpath_Java中File的getPath(),getCanonicalPath()和getAbsolutePath()之间的区别...
- 关于LRU缓存简单记录以及代码补全。
- php后台和ios网络请求,iOS网络 POST通过JSON传数据到后台
- DOCKER功能练习
- 你会几种“复制”文本的方式?----浅谈I/O流
- 撰写MLA格式的毕业论文,需留意下边几个文件格式标准
- [乡土民间故事_徐苟三传奇]第四回_张员外受骗摔新锅
- xcode10及iOS12问题
- 释迦牟尼佛和阿弥陀佛有何区别?
- mysql和mongodb查询性能测试_MongoDB 模糊查询,及性能测试
- 头条自媒体运营秘籍,坚持下去你就可以打败90%的人
- Docker MSSQL 添加读取 MDF 文件
- Junit 实例精讲基础教程(一) 使用@Ignore注解跳过单元测试方法的执行
热门文章
- background: #ff0000 url(/i/eg_bg_03.gif) ; 图片 + 颜色
- 避免和预防死锁的方式
- 2023免费版电脑视频剪辑软件会声会影
- iCloud学习笔记
- 【可视化工具】二维矩形装箱可视化 + JS-Canvas实现
- iView Table 前端分页
- 购物车模块设计及实现(SSH架构)
- HTML入门(javaee必经之路)-任亮-专题视频课程
- mysql中engine是什么意思_请问mysql中ENGINE=MyISAM代表什么意思?
- python实现智能语音翻译