转自:http://free.banzhu.com/s/salinelove/prog/ShowDetail.asp?id=37
一、数字签名
数字签名使用双钥密码加密和散列函数. 消息用散列函数处理得到消息搞要,再用双钥密码体制的私钥对其进行加密,称为数字签名.
数字签名的原理如下:消息M用散列函数H得到的消息摘要h1=H(M),然后发送方用自己的双钥密码体制的私钥KSA对这个消息摘要进行加密h’=EKSA(h1),形成发送方的数字签名.然后这个数字签名将作为消息M的附件随消息一起发送给消息的接收方,消息的接收方首先从接收方的原始消息M中计算出散列函数值h2=H(M),接着用发送双钥密码体制的公钥KPA对数字签名进行解密DKPA(h’),得h1,如果h1=h2,则表明接收方收到的消息确实是发送方发送的,而且还可以确定此消息没有被修改过.
用表达式表示如下:
发送方: h1=H(M)
h’=EKSA(h1)
接收方: h2=H(M)
h1= DKPA(h’)
如果h1=h2则表明接收方收到的消息确实是发送方发送的,而且还可以确定此消息没有被修改过.
二、数字信封
发送方用一个随机产生的DES密钥加密原始数据(消息),然后用接受方的公钥加密DES密钥,称为消息的“数字信封”。将数字信封同DES加密的消息一起发送给接受方,接受者在接收到消息后,先用其私钥对“数字信封”进行解密(打开数字信封),得到发送方的DES密钥,再用此密钥去解密消息。只有用接受方的RSA私钥才能打开数字信封,这样确保了接受者的身份。
用表达式表示如下:
发送方:C1=EKDES(M)
C2=EKPB(KDES)
接收方: KDES=DKSB(C2)
M= DKDES(C1)
数字信封既克服了两种加密体制的缺点,发挥了两种密码体制的优点,又妥善解决了密钥传送的安全问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述