?? rsa.cs
字號:
?using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace ZYBEncrypt
{
/// <summary>
/// 非對稱RSA
/// </summary>
public class RSA_
{
private RSACryptoServiceProvider rsa;
public RSA_()
{
rsa = new RSACryptoServiceProvider();
}
/// <summary>
/// 得到公鑰
/// </summary>
/// <returns></returns>
public string GetPublicKey()
{
return rsa.ToXmlString(false);
}
/// <summary>
/// 得到私鑰
/// </summary>
/// <returns></returns>
public string GetPrivateKey()
{
return rsa.ToXmlString(true);
}
/// <summary>
/// 加密
/// </summary>
/// <param name="Source">待加密字符串</param>
/// <param name="PublicKey">公鑰</param>
/// <returns></returns>
public string Encrypt(string Source, string PublicKey)
{
rsa.FromXmlString(PublicKey);
byte[] done= rsa.Encrypt(Convert.FromBase64String(Source), false);
return Convert.ToBase64String(done);
}
/// <summary>
/// 加密
/// </summary>
/// <param name="Source">待加密字符數(shù)組</param>
/// <param name="PublicKey">公鑰</param>
/// <returns></returns>
public byte[] Encrypt(byte[] Source, string PublicKey)
{
rsa.FromXmlString(PublicKey);
return rsa.Encrypt(Source, false);
}
/// <summary>
/// 加密
/// </summary>
/// <param name="inFileName">待加密文件路徑</param>
/// <param name="outFileName">加密后文件路徑</param>
/// <param name="PublicKey">公鑰</param>
public void Encrypt(string inFileName, string outFileName, string PublicKey)
{
rsa.FromXmlString(PublicKey);
FileStream fin = new FileStream(inFileName, FileMode.Open, FileAccess.Read);
FileStream fout = new FileStream(outFileName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0);
byte[] bin = new byte[1000];
long rdlen = 0;
long totlen = fin.Length;
int len;
while (rdlen < totlen)
{
len = fin.Read(bin, 0, 1000);
byte[] bout=rsa.Encrypt(bin,false);
fout.Write(bout, 0, bout.Length);
rdlen = rdlen + len;
}
fout.Close();
fin.Close();
}
/// <summary>
/// 解密
/// </summary>
/// <param name="Source">待解密字符串</param>
/// <param name="PrivateKey">私鑰</param>
/// <returns></returns>
public string Decrypt(string Source, string PrivateKey)
{
rsa.FromXmlString(PrivateKey);
byte[] done = rsa.Decrypt(Convert.FromBase64String(Source), false);
return Convert.ToBase64String(done);
}
/// <summary>
/// 解密
/// </summary>
/// <param name="Source">待解密字符數(shù)組</param>
/// <param name="PrivateKey">私鑰</param>
/// <returns></returns>
public byte[] Decrypt(byte[] Source, string PrivateKey)
{
rsa.FromXmlString(PrivateKey);
return rsa.Decrypt(Source, false);
}
/// <summary>
/// 解密
/// </summary>
/// <param name="inFileName">待解密文件路徑</param>
/// <param name="outFileName">解密后文件路徑</param>
/// <param name="PrivateKey">私鑰</param>
public void Decrypt(string inFileName, string outFileName, string PrivateKey)
{
rsa.FromXmlString(PrivateKey);
FileStream fin = new FileStream(inFileName, FileMode.Open, FileAccess.Read);
FileStream fout = new FileStream(outFileName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0);
byte[] bin = new byte[1000];
long rdlen = 0;
long totlen = fin.Length;
int len;
while (rdlen < totlen)
{
len = fin.Read(bin, 0, 1000);
byte[] bout = rsa.Decrypt(bin, false);
fout.Write(bout, 0, bout.Length);
rdlen = rdlen + len;
}
fout.Close();
fin.Close();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -