📄 rsa.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Security;
using System.Security.Cryptography;
using System.IO;
namespace EncryptAndDecrypt
{
class RSA
{
/// <summary>
/// RSA加密文件
/// </summary>
/// <param name="filePath">待加密文件</param>
/// <param name="outPath">加密后的文件</param>
/// <returns></returns>
public static bool EncryptFile(string filePath, string outPath)
{
try
{
//初始化RSA加密
//new RSACryptoServiceProvider(512);
RSACryptoServiceProvider rsac = new RSACryptoServiceProvider();
//字节缓冲区定为64(密钥为1024)
byte[] src = new byte[64];
//filePath是要加密的文件路径
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
//outPath文件路径存储的是加密之后的数据
FileStream res = new FileStream(outPath, FileMode.Create, FileAccess.Write);
int len;
//加密
while ((len = fs.Read(src, 0, 64)) > 0)
{
byte[] temp = new byte[len];
Array.Copy(src, 0, temp, 0, len);
temp = rsac.Encrypt(temp, false);
res.Write(temp, 0, temp.Length);
}
fs.Close();
res.Close();
//存储密钥到文件,以便解密用。
StreamWriter sw = new StreamWriter("RSA.key");
sw.Write(rsac.ToXmlString(true));
sw.Close();
return true;//加密成功
}
catch
{
return false;//加密失败
}
}
/// <summary>
/// RSA解密文件
/// </summary>
/// <param name="InputFilename">待解密文件</param>
/// <param name="OutputFilename">解密后的文件</param>
/// <returns></returns>
public static bool DecryptFile(string InputFilename, string OutputFilename)
{
try
{
RSACryptoServiceProvider rsac = new RSACryptoServiceProvider();
//读密钥
StreamReader sr = new StreamReader("RSA.key");
String str = sr.ReadToEnd();
sr.Close();
rsac.FromXmlString(str);
byte[] src = new byte[128];
FileStream fs = new FileStream(InputFilename, FileMode.Open, FileAccess.Read);
FileStream res = new FileStream(OutputFilename, FileMode.Create, FileAccess.Write);
int len;
//解密
while ((len = fs.Read(src, 0, 128)) > 0)
{
byte[] temp = new byte[len];
Array.Copy(src, 0, temp, 0, len);
temp = rsac.Decrypt(temp, false);
res.Write(temp, 0, temp.Length);
}
fs.Close();
res.Close();
return true;//加密成功
}
catch (System.Exception e)
{
return false;//加密失败
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -