当前位置: 首页 > article >正文

【密码学——基础理论与应用】李子臣编著 第十三章 数字签名 课后习题

题目

逐题解析

13.1

知道p=83,q=41,h=2,g=4,x=57,y=77。

我看到答案,“消息M=56”的意思居然是杂凑值,也就是传统公式的H(M)。

选择k=23,那么r=(g^k mod p) mod q = 51 mod 41=10,s=k'(H(M)+xr) mod q=29

w=s' mod q=17,u1=(mw) mod q=9,u2=(rw) mod q=6,v=((g^u1*y^u2) mod p) mod q=10=r。

13.2

答:在DSA中,参数k泄露的后果:因为s=k-1(H(m)+xr)mod q,则除x外其余参数均为已知,上式由二元一次不定同余方程变为x的一元一次方程,私钥x即可求出,所以攻击者能够由此伪造任意消息的签名。

13.3

这一题居然是自定私钥。。。

13.4

答案:信息发送者使用一单向散列函数(HASH函数)对信息生成信息摘要;   信息发送者使用自己的私钥签名信息摘要;

信息发送者把信息本身和已签名的信息摘要一起发送出去;   信息接收者通过使用与信息发送者使用的同一个单向散列函数(HASH函数)对接收的信息本身生成新的信息摘要,再使用信息发送者的公钥对信息摘要进行验证,以确认信息发送者的身 份和信息是否被修改过。

13.5

在这题要分清楚,秘密发送是加密,用公钥,明确为签名,用私钥。

(1)在RSA公钥密码体制中,p=7,q=11得n=pq=77, φ(n)=(7-1)(11-1)=60。由ed ≡1 mod(φ(n)),即43e≡1 mod 60,利用扩展欧几里得算是得e=5。公开密钥为e,交给A保存的是私钥d

(2)由(1)同理可得d=49。

(3)用A的公钥加密得密文c=6^85mod77=10。

(4)用A的私钥签名得签名s=md=68^41mod(77)=23,即<68,23>。

(5)验证m’=semodn是否与接收到的签名中的m相等,如果相等则为有效签名,否则是无效签名。

13.6

(1) 由公式可得:m = s^emodN = 8798^26959 mod 824737 = 123456

(2) 因为m’= s^emodN = 366314^26959 mod 824737 = 167058 = m,所以是有效的消息−签名对。

(3) m×m’的签名为:y = s×s’ mod N =4455587×229149 mod 824737 =75915。

推导:

13.7

http://www.lryc.cn/news/2391727.html

相关文章:

  • k8s中kubeSphere的安装使用+阿里云私有镜像仓库配置完整步骤
  • Agilent安捷伦Cary3500 UV vis光谱仪Cary60分光光度计Cary1003004000500060007000 UV visible
  • JSON解析性能优化全攻略:协程调度器选择与线程池饥饿解决方案
  • arcgis js 4.x 的geometryEngine计算距离、面积、缓冲区等报错、失败
  • vSphere 7.0 client 提示HTTP状态 500- 内部服务器错误
  • 用 Python 打造你的专属虚拟试衣间!——AI+AR 如何改变时尚体验
  • Java与Flutter集成开发跨平台应用:从核心概念到生产实践
  • SpringAI 大模型应用开发篇-纯 Prompt 开发(舔狗模拟器)、Function Calling(智能客服)、RAG (知识库 ChatPDF)
  • 微信小程序的软件测试用例编写指南及示例--性能测试用例
  • Unsupervised Learning-Word Embedding
  • 远控安全进阶之战:TeamViewer/ToDesk/向日葵设备安全策略对比
  • 变量的计算
  • 深入了解linux系统—— 库的制作和使用
  • Java中的设计模式:单例模式的深入探讨
  • View的工作流程——measure
  • 【系统架构设计师】2025年上半年真题论文回忆版: 论软件测试方法及应用(包括解题思路和参考素材)
  • 《软件工程》第 13 章 - 软件维护
  • 2024 CKA模拟系统制作 | Step-By-Step | 12、创建多容器Pod
  • python:selenium爬取网站信息
  • Nginx版本平滑迁移方案
  • WPF 按钮悬停动画效果实现
  • 满天星之canvas实现【canvas】
  • 我在架构师面前谈 Spring Inner Beans,他直接点头说:这人有料!
  • Java无序数组 vs 有序数组:性能对比与选型指南
  • 【Linux 基础知识系列】第二篇-Linux 发行版概述
  • 【开源解析】基于PyQt5+Folium的谷歌地图应用开发:从入门到实战
  • 在 Ubuntu 22.04 LTS 上离线安装 Docker
  • python调用langchain实现RAG
  • Qt 中的 d-pointer 与 p-pointer小结
  • 冷库耗电高的一种重要原因分析,以及一种降低冷库电费≥20%的方法