不对称加密和解密,用C#实现

using System;

using System.Security.Cryptography;

using System.Text;

 

class RSACSPSample

{

     public void MainTest()

     {

         try

         {

              //为了实现字节数组到字符窜的转换创建一个UnicodeEncoder

              UnicodeEncoding ByteConverter = new UnicodeEncoding();

 

              //创建一个字节数组保留原始的,加密的以及解密的数据

              //byte[] dataToEncrypt = ByteConverter.GetBytes("需要加密的数据");

 

              byte[] dataToEncrypt = ByteConverter.GetBytes("需要加密的数据");

              byte[] encryptedData;

              byte[] decryptedData;

 

              //创建一个 RSACryptoServiceProvider 的实例来产生公共和私有密钥数据

              RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

 

              //通过这个数据去加密,公共密钥信息

              //使用RSACryptoServiceProvider.ExportParameters(false),

              //和一个 boolean 变量标明是否用 OAEP 填充.

              encryptedData = RSAEncrypt(dataToEncrypt, RSA.ExportParameters(false),  false);

 

              Console.WriteLine("encrypted plaintext: {0}", Convert.ToBase64String(encryptedData));

 

              //通过这个数据去解密, 私有密钥使用

              //RSACryptoServiceProvider.ExportParameters(true),

              //和 一个 boolean变量标明是否用 OAEP 填充.

              decryptedData = RSADecrypt(encryptedData,RSA.ExportParameters(true), false);

 

              //显示解密的信息到控制台.

              Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData));

              Console.Read();

         }

         catch(ArgumentNullException)

         {

              Console.WriteLine("Encryption failed.");

         }

     }

 

     public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding)

     {

         try

         {

              RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

 

              //输入 RSA Key 信息. 包括 public key 信息.

              RSA.ImportParameters(RSAKeyInfo);

 

              //加密这个字节数组和是否用 OAEP 来填充

              //OAEP 填充仅仅在Microsoft Windows XP 或者

              //以后的版本中有用

              return RSA.Encrypt(DataToEncrypt, DoOAEPPadding);

         }

         catch(CryptographicException e)

         {

              Console.WriteLine(e.Message);

              return null;

         }

     }

 

     public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo,bool DoOAEPPadding)

     {

         try

         {

              RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

 

              //输入 RSA Key 信息. 这个需要包括

              // private key 信息

              RSA.ImportParameters(RSAKeyInfo);

 

              //解密这个字节数组和是否用 OAEP 填充. 

              return RSA.Decrypt(DataToDecrypt, DoOAEPPadding);

         }

         catch(CryptographicException e)

         {

              Console.WriteLine(e.ToString());

              return null;

         }

     }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值