using System;
using System.Security.Cryptography;
using System.IO;namespace WindowsApplication1
{
/// <summary>
/// Des 的摘要说明。
/// </summary>
public class Des
{
protected string inName;
protected string outName;
protected int keySize;
protected DES des;
private FileStream fin,fout;
private byte[] bin;
private long rdlen,totlen;
private int len;
private CryptoStream encStream; public Des()
{
inName="";
outName="";
keySize=128;
} public Des(string inFile,string outFile,int size)
{
inName=inFile;
outName=outFile;
keySize=size;
fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0);
bin = new byte[100]; //用作加密存储的中间变量
rdlen = 0; //记录写入的总字节数
totlen = fin.Length; //输入文件的大小
} ~Des()
{
encStream.Close();
fout.Close();
fin.Close();
}
public void EncryptData()
{
des = new DESCryptoServiceProvider();
des.GenerateIV();
des.GenerateKey();
encStream = new CryptoStream(fout, des.CreateEncryptor(des.Key, des.IV), CryptoStreamMode.Write);
while(rdlen < totlen)
{
len = fin.Read(bin, 0, 100);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
}
} public void DecryptData()
{
des = new DESCryptoServiceProvider();
des.GenerateIV();
des.GenerateKey();
encStream = new CryptoStream(fout, des.CreateDecryptor(des.Key, des.IV), CryptoStreamMode.Write);
while(rdlen < totlen)
{
len = fin.Read(bin, 0, 100);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
}
} }
}
using System.Security.Cryptography;
using System.IO;namespace WindowsApplication1
{
/// <summary>
/// Des 的摘要说明。
/// </summary>
public class Des
{
protected string inName;
protected string outName;
protected int keySize;
protected DES des;
private FileStream fin,fout;
private byte[] bin;
private long rdlen,totlen;
private int len;
private CryptoStream encStream; public Des()
{
inName="";
outName="";
keySize=128;
} public Des(string inFile,string outFile,int size)
{
inName=inFile;
outName=outFile;
keySize=size;
fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0);
bin = new byte[100]; //用作加密存储的中间变量
rdlen = 0; //记录写入的总字节数
totlen = fin.Length; //输入文件的大小
} ~Des()
{
encStream.Close();
fout.Close();
fin.Close();
}
public void EncryptData()
{
des = new DESCryptoServiceProvider();
des.GenerateIV();
des.GenerateKey();
encStream = new CryptoStream(fout, des.CreateEncryptor(des.Key, des.IV), CryptoStreamMode.Write);
while(rdlen < totlen)
{
len = fin.Read(bin, 0, 100);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
}
} public void DecryptData()
{
des = new DESCryptoServiceProvider();
des.GenerateIV();
des.GenerateKey();
encStream = new CryptoStream(fout, des.CreateDecryptor(des.Key, des.IV), CryptoStreamMode.Write);
while(rdlen < totlen)
{
len = fin.Read(bin, 0, 100);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
}
} }
}
using System.Text;
using System.Security.Cryptography;namespace Sanxing.WebControls.Licensing.Unit
{
/// <summary>
/// 使用DES进行对称加密处理的工具类。
/// </summary>
internal sealed class DesUnit
{
// 密码
private const string sKey = "sD2#bA*)"; /// <summary>
/// 进行DES加密。
/// </summary>
/// <param name="pToEncrypt">要加密的字符串。</param>
/// <returns>以Base64格式返回的加密字符串。</returns>
public static string Encrypt(string pToEncrypt)
{
using(DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using(CryptoStream cs = new CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write))
{
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Convert.ToBase64String(ms.ToArray());
ms.Close();
return str;
}
}
/// <summary>
/// 进行DES解密。
/// </summary>
/// <param name="pToDecrypt">要解密的以Base64</param>
/// <returns>已解密的字符串。</returns>
public static string Decrypt(string pToDecrypt)
{
byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
using(DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key=ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV=ASCIIEncoding.ASCII.GetBytes(sKey);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using(CryptoStream cs = new CryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write))
{
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return str;
}
}
}
}
输出的加密数据是以Base64编码的,支持中文。
怎么办?