通过RSA实现数字签名
一 用RSA生成签名
在RSA中,被签名的消息、密钥以及最终生成的签名都是以数字形式表示的。在对文本进行签名时,需要事先对文本编码成数字。用RSA生成签名的过程可用下列公式来表述:
这里所使用的D和N就是签名者的私钥。签名就是对消息的D次方求mod N的结果,也就是说将消息和自己相乘D次,然后再除以N求余数,最后求得的余数就是签名。
生成签名后,发送者就可以将消息和签名发送给接收者了。
二 用RSA验证签名
RSA的签名验证过程可用下列公式来表述:
这里所使用的E和N就是签名者的公钥。接收者计算签名的E次方并求mod N,得到“由签名求得的消息”,并将其与发送过来的“消息”内容进行对比,如果两者一致,则签名验证成功,否则签名验证失败。
RSA的签名生成和验证过程见下表:
三 实战
我们通过具体的数字,用RSA来实际生成和验证签名。
公钥:E=5;N=323
私钥:D=29;N=323
由于N为323,因此消息需要为0~322这个范围内的整数。在这里假设我们需要对123这个消息进行签名。
1 生成签名
下面用私钥(D,N)=(29,323)来生成消息123的签名。
消息的D次方 mod N= 123的29次方 mod 323 =157
签名是157.向接收者发送的内容为:
(消息,签名)=(123,157)这两个数字。
2 验证签名
接收者收到的内容为:
(消息,签名)=(123,157)
用公钥(E,N)=(5,323)来计算由签名求得的消息。
签名的E次方 mod N = 157的5次方 mod 323=123
我们得到的消息123与发送者直接发过来的消息123是一致的,因此签名验证成功。
通过RSA实现数字签名相关推荐
- 【密码学五】数字签名、RSA实现数字签名和验证
消息认证码&数字签名 消息认证码(message authentication code)是一种确认完整性并进行认证的技术,取三个单词的首字母,简称为MAC. 消息认证码的输入包括任意长度的消 ...
- C#毕业设计——基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码)——数字签名系统
基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于MD5+RSA的数字签名设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告PPT模板及论 ...
- python基于rsa的数字签名实现_OpenSSL和Python实现RSA Key数字签名和验证
OpenSSL和Python实现RSA Key数字签名和验证,基于非对称算法的RSA Key主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密).本文提供一个基 ...
- 非对称加密(RSA、数字签名、数字证书)
非对称加密.数字签名.数字证书的参考文章 1. 什么是非对称加密 (1)公钥和私钥成对出现 (2)公钥加密.私钥解密,私钥加密.公钥解密 (3)公钥一般对外公开,私钥保密 (4)主要用于防止通信数据被 ...
- C语言的EDS与RSA算法,数字签名原理eds算法是什么_生辰八字是什么算法
数字签名算法sha-1的fpga高速实现 数字签名算法sha-1的fpga高速实现 数字签名技术原理介绍 数字签名算法sha 1的fpga高速实现 数字签名算法sha-1的fpga高速实现 数字签名算 ...
- Java实现基于RSA的数字签名
加密与数字签名的区别 1.加密保证了数据接受方的数据安全性.加密的作用是防止泄密. 2.签名保证了数据发送方的数据安全性.签名的作用是防止篡改. 数字签名的应用 问题:在比特币中,怎么证明这个交易是你 ...
- 数据安全:通用的数据加密方法(AES、RSA、数字签名和数字证书)
在日常的接口交互中,数据的安全性是优先考虑的问题之一.那么一般我们在实际工作中如何去保证数据的安全呢?一般是通过数据加密的方式来处理.加密算法,如果按是否可以把密文还原成明文来划分的话,可以分为可逆加 ...
- 基于RSA的数字签名设计与实现
信息安全课程的第二个实验,主要是用java.js,前端页面用的html写的. 页面成果展示: 基本公私钥生成 实验环境为win10系统,使用git命令行工具--git bash生成公私钥.生成私钥,密 ...
- python基于rsa的数字签名实现_青岛宽客聚会期权定价公式基于python的实现
点击上方蓝字,关注宽客空间 2020年8月16日,宽客空间走进石岭资产,参加了青岛宽客聚会的活动.本次活动分享题目为<期权定价公式基于python的实现>.本次活动的主讲人是来自青岛石岭资 ...
最新文章
- HDU 3410 Passing the Message
- 使用srvany.exe将任何程序作为Windows服务运行
- C语言之反序数组和求最大值和最小值
- 1107班12月第5周 班级计划 为s1结业答辩做准备
- 算法系列之选择排序算法
- centos安装GNOME打开emacs
- Android 多个listview的实现
- java可以看懂php代码吗_同一段代码,在PHP里和Java里都能运行,输出结果相同,你能看懂其中的原理吗?...
- 黄聪:win7 64位系统PS、AI、PSD缩略图预览补丁
- 广告系统数据采集方法介绍
- 小程序上传身份证正反照,竖排照片横向展示
- quartz提示This scheduler instance is still active but was recovered by another instance in the cluster
- 安卓第三方支付之微信支付
- 深入理解操作系统实验——bomb lab(phase_5)
- 【数据分析/挖掘】如何处理类别型特征?常用编码方式?Python实现?
- Android模拟器横屏和竖屏的切换
- 蓝桥杯 算法提高 实数相加
- HRBUST-1814(背包问题)
- 流量劫持是什么?常用方法有哪些?
- 中国最大的传奇私服发布站和盛大的关系