.NET下的加密解密大全(3):非对称加密
本博文列出了.NET下常用的非对称加密算法,并将它们制作成小DEMO,希望能对大家有所帮助。
RSA
[csharp]
static string EnRSA(string data,string publickey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(publickey);
cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(data), false);
return Convert.ToBase64String(cipherbytes);
}
static string DeRSA(string data,string privatekey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes; rsa.FromXmlString(privatekey);
cipherbytes = rsa.Decrypt(Convert.FromBase64String(data), false);
return Encoding.UTF8.GetString(cipherbytes);
}
调用代码
[csharp]
Console.WriteLine("RSA非对称加密");
Byte[] iv = CreateKey(16);
Byte[] key = CreateKey(27);
string inputRSA_1 = inputString();
RSA rsa = RSA.Create();
string enData = EnRSA(inputRSA_1,rsa.ToXmlString(false));
Console.WriteLine("加密后的数据:{0}", enData);
Console.WriteLine("解密后的数据:{0}", DeRSA(enData,rsa.ToXmlString(true)));
DSA(数字签名)
[csharp]
static string EnDSA(string data,string publickey)
{
DSA dsa = DSA.Create();
Byte[] result;
dsa.FromXmlString(publickey);
SHA1 sha1 = SHA1.Create();
result = dsa.CreateSignature(sha1.ComputeHash(Convert.FromBase64String(data)));
return Convert.ToBase64String(result);
}
static bool DeDSA(string data,string privatekey,string originalData)
{
//Byte[] result;
DSA dsa = DSA.Create();
dsa.FromXmlString(privatekey);
SHA1 sha1 = SHA1.Create();
return dsa.VerifySignature(sha1.ComputeHash(Convert.FromBase64String(originalData)),Convert.FromBase64String(data));
}
调用代码
[csharp]
Console.WriteLine("DSA数字签名");
string inputDSA_1 = inputString();
string inputDSA_2 = inputDSA_1;
DSA dsa = DSA.Create();
string enData = EnDSA(inputDSA_1, dsa.ToXmlString(true));
Console.WriteLine("加密后的数据:{0}", enData);
Console.WriteLine("解密后的数据:{0}", DeDSA(enData, dsa.ToXmlString(false), inputDSA_2));
ECDsa
[csharp]
static string EnECDsa(string data, CngKey key)
{
ECDsaCng ecdsa = new ECDsaCng(key);
SHA1 sha1 = SHA1.Create();
byte[] result;
result = ecdsa.SignHash(sha1.ComputeHash(Convert.FromBase64String(data)));
return Convert.ToBase64String(result);
}
static bool DeECDsa(string data, CngKey key,string originalData)
{
ECDsaCng ecdsa = new ECDsaCng(key);
SHA1 sha1 = SHA1.Create();
return ecdsa.VerifyHash(sha1.ComputeHash(Convert.FromBase64String(originalData)), Convert.FromBase64String(data));
}
调用代码
[csharp]
Console.WriteLine("ECDsa数字签名");
string inputDSA_1 = inputString();
string inputDSA_2 = inputDSA_1;
CngKey key = CngKey.Create(CngAlgorithm.ECDsaP256);
string enData = EnECDsa(inputDSA_1, key);
Console.WriteLine("加密后的数据:{0}", enData);
Console.WriteLine("解密后的数据:{0}", DeECDsa(enData, key, inputDSA_2));
.NET下的加密解密大全(3):非对称加密的更多相关文章
- 加密解密知识 php非对称加密
function test1(){ $config = array( "digest_alg" => "sha1", "private_key_ ...
- PHP中使用OpenSSL生成RSA公钥私钥及进行加密解密示例(非对称加密)
php服务端与客户端交互.提供开放api时,通常需要对敏感的部分api数据传输进行数据加密,这时候rsa非对称加密就能派上用处了,下面通过一个例子来说明如何用php来实现数据的加密解密 先了解一下关于 ...
- 使用java实现对称加密解密(AES),非对称加密解密(RSA)
对称加密:双方采用同样的秘钥进行加密和解密.特点是速度快,但是安全性没有非对称加密高 非对称加密:接收方生成的公有秘钥公布给发送方,发送方使用该公有秘钥加密之后,发送给接收方,然后接收方使用私有秘钥解 ...
- 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)
原文:各种加密解密函数(URL加密解密.sha1加密解密.des加密解密) 普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语 ...
- php中des加密解密 匹配C#des加密解密 对称加密
原文:php中des加密解密 匹配C#des加密解密 对称加密 网上找来的 php des加密解密 完全匹配上一篇C# 字符串加密解密函数 可以用于C#和php通信 对数据进行加密,其中$key 是 ...
- AES加密解密 助手类 CBC加密模式
"; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); ...
- .NET下的加密解密大全(2):对称加密
本博文列出了.NET下常用的对称加密算法,并将它们制作成小DEMO,希望能对大家有所帮助. 公共代码[csharp]static byte[] CreateKey(int num) { byt ...
- .NET下的加密解密大全(1): 哈希加密
.NET有丰富的加密解密API库供我们使用,本博文总结了.NET下的Hash散列算法,并制作成简单的DEMO,希望能对大家有所帮助. MD5[csharp]using System; using Sy ...
- Java加密解密大全
ChinaSEI系列讲义(By 郭克华) Java加密解密方法大全 如果有文字等小错,请多包涵.在不盈利的情况下,欢迎免费传播. 版权所有.郭克华 本讲义经 ...
随机推荐
- ecshop模板修改后还原的原因
转:http://www.ecmoban.com/article-1693.html 有些刚接触 ecshop的朋友会遇到这样的问题:今天刚修改好的一个地方,等过一段时间后台操作了一会之后发现修改过的 ...
- 字符串(AC自动机):HDU 5129 Yong Zheng's Death
Yong Zheng's Death Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/O ...
- include a image in devexpress datagrid
Add an ImageCollection to yout form and add some icons 16x16 to it. Add a column to the Grid for the ...
- Action中取得request,session的四种方式
Action中取得request,session的四种方式 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象 ...
- 用户故事(User Story)
摘要: 一件用户通过系统完成他一个有价值的目标(买一罐饮料)的事.这样的过程就叫“用户案例(user case)”或者“用户故事(user story)”.本文描述了敏捷开发的技巧:如何以用户故事管理 ...
- Good Numbers
Problem Description If we sum up every digit of a number and the result can be exactly divided by 10 ...
- poj 3304 Segments(计算几何基础)
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11593 Accepted: 3657 Descr ...
- ASP.NET中设置一个定时器来定时更新 转
asp.net 定时器 比较少用, 中国红木网这是一个相当实用的功能,有了RSS博客镜像,就不需要在多处同时发布博客日志了.比如你同时在新浪上有自己的博客,又同时有自己的个人博客站点,那么你只需要在 ...
- opencl-Shader
转载自:http://blog.csdn.net/leonwei/article/details/8956632 这里介绍关于OpenCL中program函数的写法,program函数通常是文本形式的 ...
- 使用 Visual Studio 生成通用的 XAML 应用程序 (Windows Phone 和 Windows 通用程序)
在Build会议上,我们发布了新的版本---Windows Phone 8.1. Windows 8.1 平台.作为开发人员,这意味着您现在可以生成 XAML 和 HTML 的通用程序,并通过分享大量 ...