本博文列出了.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):非对称加密的更多相关文章

  1. 加密解密知识 php非对称加密

    function test1(){ $config = array( "digest_alg" => "sha1", "private_key_ ...

  2. PHP中使用OpenSSL生成RSA公钥私钥及进行加密解密示例(非对称加密)

    php服务端与客户端交互.提供开放api时,通常需要对敏感的部分api数据传输进行数据加密,这时候rsa非对称加密就能派上用处了,下面通过一个例子来说明如何用php来实现数据的加密解密 先了解一下关于 ...

  3. 使用java实现对称加密解密(AES),非对称加密解密(RSA)

    对称加密:双方采用同样的秘钥进行加密和解密.特点是速度快,但是安全性没有非对称加密高 非对称加密:接收方生成的公有秘钥公布给发送方,发送方使用该公有秘钥加密之后,发送给接收方,然后接收方使用私有秘钥解 ...

  4. 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

    原文:各种加密解密函数(URL加密解密.sha1加密解密.des加密解密) 普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语 ...

  5. php中des加密解密 匹配C#des加密解密 对称加密

    原文:php中des加密解密 匹配C#des加密解密 对称加密 网上找来的 php des加密解密 完全匹配上一篇C# 字符串加密解密函数  可以用于C#和php通信 对数据进行加密,其中$key 是 ...

  6. AES加密解密 助手类 CBC加密模式

    "; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); ...

  7. .NET下的加密解密大全(2):对称加密

    本博文列出了.NET下常用的对称加密算法,并将它们制作成小DEMO,希望能对大家有所帮助. 公共代码[csharp]static byte[] CreateKey(int num) {     byt ...

  8. .NET下的加密解密大全(1): 哈希加密

    .NET有丰富的加密解密API库供我们使用,本博文总结了.NET下的Hash散列算法,并制作成简单的DEMO,希望能对大家有所帮助. MD5[csharp]using System; using Sy ...

  9. Java加密解密大全

    ChinaSEI系列讲义(By 郭克华)   Java加密解密方法大全                     如果有文字等小错,请多包涵.在不盈利的情况下,欢迎免费传播. 版权所有.郭克华 本讲义经 ...

随机推荐

  1. Discuz! x 2.5-3.0 beta 存储型跨站漏洞

    漏洞版本: Discuz x 2.5 - 3.0 漏洞描述: Discuz! 已拥有11年以上的应用历史和200多万网站用户案例 是全球成熟度最高.覆盖率最大的论坛软件系统之一,淘帖处发表评论,直接插 ...

  2. 64位windows7 上安装32位oracle 10g 的方法

    操作系统: windows7 中文旗舰版 oracle安装版本: 10.2.0.1 中文版,升级补丁至 10.2.0.3 下面说正题首先,我们要解除oracle安装的windows版本检测1.编辑安装 ...

  3. DevExpress之lookupedit

    DevExpress中的lookupedit的使用方法. 绑定数据源:     lookupedit.properties.valuemember = 实际要用的字段;   //相当于editvalu ...

  4. Normal Vector Using WorldInverseTranspose

    shader里面经常看到normal向量是用WorldInverseTranspose矩阵做变换的,有时候也可以用WorldMatrix变换. 原理: If your object is only e ...

  5. centos 系统程序包安装记录

    -添加sudoer su - vi /etc/sudoers 在root ALL=(ALL) ALL 下添加: pete ALL=(ALL) ALL -安装拼音: sudo yum install & ...

  6. Linux IIO子系统分析

    最近稍微看了下LKML,发现里面有一个子系统叫做“IIO”.以前没有接触过,所以Google了下.     IIO子系统全称是 Industrial I/O subsystem(工业 I/O 子系统) ...

  7. hbulider 快捷键以及常用

    跳转到行        Ctrl + G   页首        Ctrl + Home   页尾        Ctrl + End   下一个选项卡        Ctrl + Tab   上一个 ...

  8. Idea实现WebService实例 转

    作者:http://blog.csdn.net/dreamfly88/article/details/52350370 因为工作需要,数据传输部分需要使用webservice实现,经过两天的研究,实现 ...

  9. DDoS deflate - Linux下防御/减轻DDOS攻击

    2010年04月19日 上午 | 作者:VPS侦探 前言 互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事.在没有硬防的情况下,寻找软件代替是最直接的方法,比如用iptables ...

  10. Apache Shiro 集成-Cas

    http://blog.csdn.net/peterwanghao/article/details/8825008 Shiro集成CAS是在1.2版本里新增的功能. Shiro-cas模块将应用作为C ...