Seed Lab实验:RSAPublic-Key Encryption and Signature Lab

news/2025/2/28 15:18:12/文章来源:https://www.cnblogs.com/hjdssj/p/18655176

RSAPublic-Key Encryption and Signature Lab

1.推导RSA私钥

import gmpy2p = 0xF7E75FDC469067FFDC4E847C51F452DF
q = 0xE85CED54AF57E53E092113E62F436F4F
e = 0x0D88C3n = q * p
phi = (p - 1) * (q - 1)
d = gmpy2.invert(e, phi)print("public key:(" + hex(e) + ',' + hex(n) + ")")
print("private key:" + hex(d))

2.用RSA加密一个消息

import gmpy2n = 0xDCBFFE3E51F62E09CE7032E2677A78946A849DC4CDDE3A4D0CB81629242FB1A5
e = 0x010001m = "A top secret!".encode("utf-8").hex()
m = int(m, 16)
c = gmpy2.powmod(m, e, n)
print(hex(c))

3.解密这个消息

 C  =  8C0F971DF2F3672B28811407E2DABBE1DA0FEBBBDFC7DCB67396567EA1E2493F
import gmpy2n = 0xDCBFFE3E51F62E09CE7032E2677A78946A849DC4CDDE3A4D0CB81629242FB1A5
d = 0x74D806F9F3A62BAE331FFE3F0A68AFE35B3D2E4794148AACBC26AA381CD7D30D
C = 0x8C0F971DF2F3672B28811407E2DABBE1DA0FEBBBDFC7DCB67396567EA1E2493FM = gmpy2.powmod(C, d, n)
m = str(hex(M))[2:]
print("M:" + bytes.fromhex(m).decode("utf-8"))

4.产生一个消息的数字签名

import gmpy2n = 0xDCBFFE3E51F62E09CE7032E2677A78946A849DC4CDDE3A4D0CB81629242FB1A5
e = 0x010001
d = 0x74D806F9F3A62BAE331FFE3F0A68AFE35B3D2E4794148AACBC26AA381CD7D30Dmsg = ["I owe you $2000", "I owe you $3000"]
for m in msg:print(m)m = int(m.encode("utf-8").hex(), 16)c = gmpy2.powmod(m, d, n)print(hex(c))

5.验证这个数字签名是否正确

import gmpy2M = "Launch a missile."
Sorg = 0x643D6F34902D9C7EC90CB0B2BCA36C47FA37165C0005CAB026C0542CBDB6802F
Serr = 0x643D6F34902D9C7EC90CB0B2BCA36C47FA37165C0005CAB026C0542CBDB6802A
n = 0xAE1CD4DC432798D933779FBD46C6E1247F0CF1233595113AA51B450F18116115
e = 0x010001sig = [Sorg, Serr]
for S in sig:m = gmpy2.powmod(S, e, n)m = str(hex(m))[2:]try:msg = bytes.fromhex(m).decode('utf-8')print(msg)if m == M:print("signature valid!")else:print("signature invalid!")except:print(bytes.fromhex(m))print("signature invalid!")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/864945.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双稳态触发器

双稳态触发器双稳态触发器是一种具有记忆功能的逻辑单元电路,它能储存一位二进制码。 特点有两个稳定状态“0”态和“1”态; 能根据输入信号将触发器置成“0”或“1”态; 输入信号消失后,被置成的“0”或“1”态能保存下来,即具有记忆功能。RS触发器 基本RS触发器 输入低电…

在Lazarus下的Free Pascal编程教程——以数据处置推动程序运行的模块化程序设计方法

0.前言 我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。 了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”和…

foobar2000 v2.24.1 汉化版

foobar2000 v2.24.1 汉化版 -----------------------【软件截图】---------------------- -----------------------【软件介绍】---------------------- foobar2000 是一个 Windows 平台下的高级音频播放器.包含完全支持 unicode 及支持播放增益的高级标签功能. 特色: * 支持的…

ABB机器人IO板DSQC652维修方法归纳

ABB机械手IO板DSQC652维修需要一定的专业知识和技能,以下是详细的维修步骤和注意事项:1. 初步检查断电操作:在维修前,确保机器人系统完全断电,避免触电或损坏设备。外观检查:检查DSQC652板是否有明显的物理损坏,如烧焦痕迹、裂纹或元件脱落。连接检查:检查IO板与控制器…

车载以太网一致性测试套件TAE.AETP

随着汽车电子电气架构的发展,高带宽、高速率的数据通信需求逐步涌现,具有稳定、高效特点的车载以太网技术逐步成为汽车主干网通信主流方案。为了满足复杂的通信需求,越来越多的以太网通信协议被应用到车载领域与之而来的是更多新技术的测试验证需求,经纬恒润自主研发的车载…

直播电商运营工具如何选?看这一篇就够了

近年来,直播电商迅速崛起,成为电商行业的新风口。无论是头部主播还是中小商家,都希望通过直播带货实现销售增长。然而,随着市场竞争的加剧,直播电商的运营难度也在不断增加。商家们面临着选品、数据分析、用户互动、流量获取等多重挑战。如何高效管理直播流程、精准分析数…

使用 NodeLocalDNS 提升集群 DNS 性能和可靠性

本文主要分享如何使用 NodeLocal DNSCache 来提升集群中的 DNS 性能以及可靠性,包括部署、使用配置以及原理分析,最终通过压测表明使用后带来了高达 50% 的性能提升。1.背景 什么是 NodeLocalDNS NodeLocal DNSCache 是一套 DNS 本地缓存解决方案。NodeLocal DNSCache 通过在…

如何提高企业团队间的协作效率?四大关键策略

在现代企业管理中,团队协作和任务管理是提升整体工作效率的关键。然而,随着团队规模的扩大和任务复杂性的增加,如何高效地分配任务、跟踪进度并确保协作流畅,成为了企业管理者头痛的问题。尤其在跨部门合作和远程团队的背景下,传统的沟通方式和任务管理手段显得尤为不适应…

ASE60N02-ASEMI中低压N沟道MOS管ASE60N02

ASE60N02-ASEMI中低压N沟道MOS管ASE60N02编辑:ll ASE60N02-ASEMI中低压N沟道MOS管ASE60N02 型号:ASE60N02 品牌:ASEMI 封装:TO-252 批号:最新 最大漏源电流:60A 漏源击穿电压:20V RDS(ON)Max:6mΩ 引脚数量:3 芯片个数: 沟道类型:N沟道MOS管、低压MOS管 漏电流:u…

制造业项目管理:如何实现从设计到交付的完美流程?

在当今竞争激烈的制造业市场中,能否实现从设计到交付的完美流程,往往决定着企业的成败。一个流畅且高效的项目管理流程,不仅能确保产品按时交付,还能提升产品质量,降低成本,增强企业的市场竞争力。那么,究竟如何才能打造这样一个完美流程呢?接下来,让我们深入探讨。一…

数据安全性超强的10个项目管理工具

在当今数字化时代,数据安全性已成为项目管理工具选择中的关键因素。无论是企业内部项目还是跨团队协作,确保敏感信息的安全性至关重要。本文将介绍10个数据安全性最强的项目管理工具,帮助您在选择工具时做出明智的决策。 禅道项目管理软件禅道项目管理软件是一款专为中国市场…