C#上位机开发(十八)—— 基于RSA算法实现数字签名与认证(私钥签名,公钥认证)

Posted Mculover666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#上位机开发(十八)—— 基于RSA算法实现数字签名与认证(私钥签名,公钥认证)相关的知识,希望对你有一定的参考价值。

一、数字签名

数字签名可以识别消息是否被篡改,并验证消息的可靠性,也可以防止否认。

数字签名类似于现实世界中的盖章和签字,它具有以下四大特征:

  • 可验证性:接收者可以验证发送者签名的真实性和有效性;
  • 不可伪造性:除签名者之外,任何人不可伪造签名;
  • 不可否认性:发送方不能否认自己所发送的签名;
  • 数据完整性:能够提供对所签消息的完整性校验;

二、使用openssl生成RSA密钥对

数字签名使用私钥签名,使用公钥验证签名。使用openssl生成签名。

1. 生成私钥

openssl genrsa -out ./rsa_private_key.pem 2048

2. 私钥转换为PKCS8格式

openssl pkcs8 -topk8 -inform PEM -in ./rsa_private_key.pem -outform PEM -nocrypt -out ./rsa_private_key_pkcs8.pem

3. 生成公钥

openssl rsa -in ./rsa_private_key.pem -pubout -out rsa_public_key_2048.pub

最终生成的密钥文件如下:

三、C#中使用RSA算法签名与验签

这里折腾了很久,发现了一个比较好的开源仓库,感谢大佬。

仓库链接: WindowsForms私钥签名公钥验签

1. BouncyCastle包

2. 运行效果——签名

签名只需要私钥,将PKCS8格式的私钥(rsa_private_key_pkcs8.pem)文件内容复制到工具,对消息进行签名:

3. 运行效果——验签

验签需要公钥,将公钥内容(rsa_public_key_2048.pub)复制到工具:

以上是关于C#上位机开发(十八)—— 基于RSA算法实现数字签名与认证(私钥签名,公钥认证)的主要内容,如果未能解决你的问题,请参考以下文章

C# | 上位机开发新手指南摘要算法

c#上位机开发

基于uFUN开发板的心率计Qt上位机的实现

Halcon与C#联合编程:使用S7协议实现机器视觉上位机与西门子PLC联动

C#上位机开发(十七)—— 基于NuGet安装并使用包(Visual Studio)

C#上位机开发(十七)—— 基于NuGet安装并使用包(Visual Studio)