欢迎来到入门教程网!

C#教程

当前位置:主页 > 软件编程 > C#教程 >

C#使用RSA加密解密文件

来源:本站原创|时间:2020-01-10|栏目:C#教程|点击:

本文实例为大家分享了C#使用RSA加密解密文件的具体代码,供大家参考,具体内容如下

加密代码:

//加密代码,注意会覆盖原文件,里面有我的公钥,你要用时记得覆盖我的公钥
 private bool  encryptFile(string filename)
    {
      FileStream f;
      try
      {
        f = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
      }
      catch
      {
        return false;
      }
      Random r = new Random();
      Thread.Sleep(10*r.Next(3,8));
      RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
      rsa.FromXmlString("<RSAKeyValue><Modulus>w7nNT8U7kwTw8UqLk0lROxmfTRZnQrMH1QrNyUGtoeAJ3w+iH08j+h83cPWxwPoxpXm1cgCLFWtCFWY1rkQDCCLxJhUIwYTbGKTg9h0uUVfNxGiNji7dcHShd01UYpZjHCwOar1wjJD4vJqVJCk++59UUMhE9IUATuSUVpRy1bE=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>");
      //导入密钥
      byte[] data = new byte[16];
      ArrayList con = new ArrayList();
      while(f.Read(data, 0, 16)!=0)
      {

        byte[] result = rsa.Encrypt(data,false);
        //Thread.Sleep(10 * r.Next(2, 7));
        con.Add(result);
      }
      //加密
      f.Seek(0, SeekOrigin.Begin);
      foreach(byte[] d in con)
      {
        f.Write(d, 0, d.Length);
      }

      f.Close();
      return true;
}

解密代码:

//解密代码,覆盖原文件,返回值表示是否解密成功
 private bool decryptFile(string filename,string key)
    {
      FileStream f;
      try
      {
        f = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
      }
      catch
      {
        return false;
      }
      RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
      try
      {
        rsa.FromXmlString(key);
      }
      catch
      {
        return false;
      }

      byte[] data = new byte[128];
      ArrayList con = new ArrayList();
      while (f.Read(data, 0, 128) != 0)
      {
        byte[] result;
        try
        {
          result = rsa.Decrypt(data, false);
        }
        catch
        {
          return false;
        }
        con.Add(result);
      }
      //解密
      f.SetLength(con.Count * 16);
      f.Seek(0, SeekOrigin.Begin);
      foreach (byte[] d in con)
      {
        f.Write(d, 0, d.Length);
      }
      f.Close();
      return true;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

上一篇:c#在程序中定义和使用自定义事件方法总结

栏    目:C#教程

下一篇:C#中常用的运算符总结

本文标题:C#使用RSA加密解密文件

本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/4821.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有