一 用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实现数字签名相关推荐

  1. 【密码学五】数字签名、RSA实现数字签名和验证

    消息认证码&数字签名 消息认证码(message authentication code)是一种确认完整性并进行认证的技术,取三个单词的首字母,简称为MAC. 消息认证码的输入包括任意长度的消 ...

  2. C#毕业设计——基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码)——数字签名系统

    基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于MD5+RSA的数字签名设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告PPT模板及论 ...

  3. python基于rsa的数字签名实现_OpenSSL和Python实现RSA Key数字签名和验证

    OpenSSL和Python实现RSA Key数字签名和验证,基于非对称算法的RSA Key主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密).本文提供一个基 ...

  4. 非对称加密(RSA、数字签名、数字证书)

    非对称加密.数字签名.数字证书的参考文章 1. 什么是非对称加密 (1)公钥和私钥成对出现 (2)公钥加密.私钥解密,私钥加密.公钥解密 (3)公钥一般对外公开,私钥保密 (4)主要用于防止通信数据被 ...

  5. C语言的EDS与RSA算法,数字签名原理eds算法是什么_生辰八字是什么算法

    数字签名算法sha-1的fpga高速实现 数字签名算法sha-1的fpga高速实现 数字签名技术原理介绍 数字签名算法sha 1的fpga高速实现 数字签名算法sha-1的fpga高速实现 数字签名算 ...

  6. Java实现基于RSA的数字签名

    加密与数字签名的区别 1.加密保证了数据接受方的数据安全性.加密的作用是防止泄密. 2.签名保证了数据发送方的数据安全性.签名的作用是防止篡改. 数字签名的应用 问题:在比特币中,怎么证明这个交易是你 ...

  7. 数据安全:通用的数据加密方法(AES、RSA、数字签名和数字证书)

    在日常的接口交互中,数据的安全性是优先考虑的问题之一.那么一般我们在实际工作中如何去保证数据的安全呢?一般是通过数据加密的方式来处理.加密算法,如果按是否可以把密文还原成明文来划分的话,可以分为可逆加 ...

  8. 基于RSA的数字签名设计与实现

    信息安全课程的第二个实验,主要是用java.js,前端页面用的html写的. 页面成果展示: 基本公私钥生成 实验环境为win10系统,使用git命令行工具--git bash生成公私钥.生成私钥,密 ...

  9. python基于rsa的数字签名实现_青岛宽客聚会期权定价公式基于python的实现

    点击上方蓝字,关注宽客空间 2020年8月16日,宽客空间走进石岭资产,参加了青岛宽客聚会的活动.本次活动分享题目为<期权定价公式基于python的实现>.本次活动的主讲人是来自青岛石岭资 ...

最新文章

  1. HDU 3410 Passing the Message
  2. 使用srvany.exe将任何程序作为Windows服务运行
  3. C语言之反序数组和求最大值和最小值
  4. 1107班12月第5周 班级计划 为s1结业答辩做准备
  5. 算法系列之选择排序算法
  6. centos安装GNOME打开emacs
  7. Android 多个listview的实现
  8. java可以看懂php代码吗_同一段代码,在PHP里和Java里都能运行,输出结果相同,你能看懂其中的原理吗?...
  9. 黄聪:win7 64位系统PS、AI、PSD缩略图预览补丁
  10. 广告系统数据采集方法介绍
  11. 小程序上传身份证正反照,竖排照片横向展示
  12. quartz提示This scheduler instance is still active but was recovered by another instance in the cluster
  13. 安卓第三方支付之微信支付
  14. 深入理解操作系统实验——bomb lab(phase_5)
  15. 【数据分析/挖掘】如何处理类别型特征?常用编码方式?Python实现?
  16. Android模拟器横屏和竖屏的切换
  17. 蓝桥杯 算法提高 实数相加
  18. HRBUST-1814(背包问题)
  19. 流量劫持是什么?常用方法有哪些?
  20. 中国最大的传奇私服发布站和盛大的关系

热门文章

  1. 大厂二面:应对千亿级高并发场景,MySQL如何分库分表?
  2. cartographer中分支定界法理解——为什么能保证上界
  3. hive3编译 on tez+tez-ui配置和遇到的兼容问题与踩坑记录
  4. matlab 三维动态,matlab三维动态绘图
  5. 以Listener和Talker为例ROS1和ROS2代码对比
  6. UML图之五——时序图
  7. 华为OD-Java面经
  8. 宝塔面板ssh安装mysql_centos安装BT宝塔面板
  9. 使用mycat实现分库分表
  10. 北京2017年7月开始 社保最低缴费