一个使用公钥签名与加密,使用密钥解密的案例。。。
2017-06-17 15:32
369 查看
static void Main(string[] args)
{
string s = "老王头,这周又开始忙了!";
byte[] data;
RSACryptoServiceProvider rsp = new RSACryptoServiceProvider();
System.IO.File.WriteAllText(@"D:\wangran\公钥.xml", rsp.ToXmlString(false));
System.IO.File.WriteAllText(@"D:\wangran\密钥.xml", rsp.ToXmlString(true));
//byte[] 公钥 = rsp.ExportCspBlob(false);
byte[] 密钥 = rsp.ExportCspBlob(true);//负责解密
//System.IO.File.WriteAllText(@"D:\wangran\公钥.txt", Convert.ToBase64String(公钥));
System.IO.File.WriteAllText(@"D:\wangran\密钥.txt", Convert.ToBase64String(密钥));
data = System.Text.UTF8Encoding.UTF8.GetBytes(s);
byte[] data_1 = rsp.SignData(data, "md5");
byte[] data1 = rsp.Encrypt(data, false);
Console.WriteLine(
System.Text.UTF8Encoding.UTF8.GetString(data));
Console.WriteLine(
System.Text.UTF8Encoding.UTF8.GetString(data_1));
rsp = new RSACryptoServiceProvider();
//rsp.ImportCspBlob(公钥);
rsp.FromXmlString(System.IO.File.ReadAllText(@"D:\wangran\公钥.xml"));
//公钥只签名与加密,不解密
byte[] data2 = rsp.Encrypt(data, false);
Console.WriteLine(Convert.ToBase64String(data1));
Console.WriteLine(Convert.ToBase64String(data2));
//验签
Console.WriteLine(rsp.VerifyData(data, "md5", data_1));
rsp = new RSACryptoServiceProvider();
//rsp.ImportCspBlob(公钥);
rsp.FromXmlString(System.IO.File.ReadAllText(@"D:\wangran\公钥.xml"));
data2 = rsp.Encrypt(data, false);
Console.WriteLine(Convert.ToBase64String(data1));
Console.WriteLine(Convert.ToBase64String(data2));
//验签
Console.WriteLine(rsp.VerifyData(data, "md5", data_1));
}
{
string s = "老王头,这周又开始忙了!";
byte[] data;
RSACryptoServiceProvider rsp = new RSACryptoServiceProvider();
System.IO.File.WriteAllText(@"D:\wangran\公钥.xml", rsp.ToXmlString(false));
System.IO.File.WriteAllText(@"D:\wangran\密钥.xml", rsp.ToXmlString(true));
//byte[] 公钥 = rsp.ExportCspBlob(false);
byte[] 密钥 = rsp.ExportCspBlob(true);//负责解密
//System.IO.File.WriteAllText(@"D:\wangran\公钥.txt", Convert.ToBase64String(公钥));
System.IO.File.WriteAllText(@"D:\wangran\密钥.txt", Convert.ToBase64String(密钥));
data = System.Text.UTF8Encoding.UTF8.GetBytes(s);
byte[] data_1 = rsp.SignData(data, "md5");
byte[] data1 = rsp.Encrypt(data, false);
Console.WriteLine(
System.Text.UTF8Encoding.UTF8.GetString(data));
Console.WriteLine(
System.Text.UTF8Encoding.UTF8.GetString(data_1));
rsp = new RSACryptoServiceProvider();
//rsp.ImportCspBlob(公钥);
rsp.FromXmlString(System.IO.File.ReadAllText(@"D:\wangran\公钥.xml"));
//公钥只签名与加密,不解密
byte[] data2 = rsp.Encrypt(data, false);
Console.WriteLine(Convert.ToBase64String(data1));
Console.WriteLine(Convert.ToBase64String(data2));
//验签
Console.WriteLine(rsp.VerifyData(data, "md5", data_1));
rsp = new RSACryptoServiceProvider();
//rsp.ImportCspBlob(公钥);
rsp.FromXmlString(System.IO.File.ReadAllText(@"D:\wangran\公钥.xml"));
data2 = rsp.Encrypt(data, false);
Console.WriteLine(Convert.ToBase64String(data1));
Console.WriteLine(Convert.ToBase64String(data2));
//验签
Console.WriteLine(rsp.VerifyData(data, "md5", data_1));
}
相关文章推荐
- PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解
- 客户端使用公钥进行加密,服务端使用密钥进行解密
- java中的使用RSA算法进行公钥加密私钥解密
- 加密,解密,认证,数字签名,公钥私钥
- 整合一个基于c#的RSA私钥加密公钥解密的Helper类,含源码
- 基于Crypto++/Cryptopp的rsa密钥生成,rsa加密、解密,rsa签名、验签
- java生成密钥对,及对数据进行加密、解密、签名、验签
- 一个简单的c#加密,签名,验签,解密算法.(1)
- java中的使用RSA算法进行公钥加密私钥解密
- C#使用RSA进行私钥加密公钥解密
- 整合一个基于c#的RSA私钥加密公钥解密的Helper类,含源码
- WSE3.0构建Web服务安全(2):非对称加密、公钥、密钥、证书、签名的区别和联系以及X.509 证书的获得和管理
- C#使用RSA私钥加密公钥解密的改进,解决特定情况下解密后出现乱码的问题
- Java的密钥对,在C# 中使用加密解密
- 使用Microsoft CryptoAPI进行加密、解密、签名及验证(代码)
- WSE3.0构建Web服务安全(2):非对称加密、公钥、密钥、证书、签名的区别和联系以及X.509 证书的获得和管理
- 使用Microsoft CryptoAPI进行加密、解密、签名及验证
- RSA加解密使用总结,.net私钥加密公钥解密,WinCE平台RSA加解密
- 加密,解密,认证,数字签名,公钥私钥
- java中的使用RSA算法进行公钥加密私钥解密