中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
常用编码工具类,支持base64,md5,des,crc32
作者:未知 时间:2005-09-13 23:34 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:常用编码工具类,支持base64,md5,des,crc32


支持从文件到文件,从字符串到字符串的方式操作
以下是源码
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();
关闭本页

 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有