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是一致的,因此签名验证成功。
————————————————
版权声明:本文为CSDN博主「cakincqm」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chengqiuming/article/details/82831835
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律