当前位置: 移动技术网 > IT编程>开发语言>c# > C#使用RSA加密解密文件

C#使用RSA加密解密文件

2019年07月18日  | 移动技术网IT编程  | 我要评论
本文实例为大家分享了c#使用rsa加密解密文件的具体代码,供大家参考,具体内容如下 加密代码: //加密代码,注意会覆盖原文件,里面有我的公钥,你要用时记得覆盖

本文实例为大家分享了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;
}

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

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网