支持从文件到文件,从字符串到字符串的方式操作 以下是源码
using System;
using System.IO;
using System.Security;
using System.Security.Cryptography;
using System.Runtime.InteropServices;
using System.Text;

 namespace YNEC.Services.Encrypt {
 /**//// <summary>
/// CRC 效验
/// 快速检测算法
/// </summary>
 public class CRC32 {

protected ulong[] crc32Table;

 /**//// <summary>
/// 构造:初始化效验表
/// </summary>
 public CRC32() {
const ulong ulPolynomial = 0xEDB88320;
ulong dwCrc;
crc32Table = new ulong[256];
int i,j;
 for(i = 0; i < 256; i++) {
dwCrc = (ulong)i;
 for(j = 8; j > 0; j--) {
if((dwCrc & 1)==1)
dwCrc = (dwCrc >> 1) ^ ulPolynomial;
else
dwCrc >>= 1;
}
crc32Table[i] = dwCrc;
}
}

 /**//// <summary>
/// 字节数组效验
/// </summary>
/// <param name="buffer">ref 字节数组</param>
/// <returns></returns>
 public ulong ByteCRC(ref byte[] buffer) {
ulong ulCRC = 0xffffffff;
ulong len;
len = (ulong)buffer.Length;
 for (ulong buffptr=0; buffptr < len; buffptr++) {
ulong tabPtr = ulCRC & 0xFF;
tabPtr = tabPtr ^ buffer[buffptr];
ulCRC = ulCRC >> 8;
ulCRC = ulCRC ^ crc32Table[tabPtr];
}
return ulCRC ^ 0xffffffff;
}


 /**//// <summary>
/// 字符串效验
/// </summary>
/// <param name="sInputString">字符串</param>
/// <returns></returns>
 public ulong StringCRC(string sInputString) {
byte[] buffer = Encoding.Default.GetBytes(sInputString);
return ByteCRC(ref buffer);
}

 /**//// <summary>
/// 文件效验
/// </summary>
/// <param name="sInputFilename">输入文件</param>
/// <returns></returns>
 public ulong FileCRC(string sInputFilename) {
FileStream inFile = new System.IO.FileStream(sInputFilename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] bInput = new byte[inFile.Length];
inFile.Read(bInput,0,bInput.Length);
inFile.Close();

return ByteCRC(ref bInput);
}

}
 /**//// <summary>
/// MD5 无逆向编码
/// 获取唯一特征串,可用于密码加密
/// (无法还原)
/// </summary>
 public class MD5 {

 public MD5() {
}

 /**//// <summary>
/// 获取字符串的特征串
/// </summary>
/// <param name="sInputString">输入文本</param>
/// <returns></returns>
 public string HashString(string sInputString) {
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
string encoded = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(sInputString))).Replace("-","");
return encoded;
}

 /**//// <summary>
/// 获取文件的特征串
/// </summary>
/// <param name="sInputFilename">输入文件</param>
/// <returns></returns>
 public string HashFile(string sInputFilename) {
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
FileStream inFile = new System.IO.FileStream(sInputFilename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] bInput = new byte[inFile.Length];
inFile.Read(bInput,0,bInput.Length);
inFile.Close();

string encoded = BitConverter.ToString(md5.ComputeHash(bInput)).Replace("-","");
return encoded;
}

}

 /**//// <summary>
/// Base64 UUEncoded 编码
/// 将二进制编码为ASCII文本,用于网络传输
/// (可还原)
/// </summary>
 public class BASE64 {

 public BASE64() {
}

 /**//// <summary>
/// 解码字符串
/// </summary>
/// <param name="sInputString">输入文本</param>
/// <returns></returns>
 public string DecryptString(string sInputString) {
char[] sInput = sInputString.ToCharArray();
关闭本页
|