首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
tellmenow (22)
cutemouse (22)
softj (78)
iiprogram (69)
qdzx2008 (50)
goodboy1881 (14)
wangchinaking (58)
fancyhf (1)
harrymeng (41)
yjz0065 (113)
CSDN - 文档中心 - .NET 阅读:5970   评论: 6    参与评论
标题   DES(Data Encryption Standard)加密解密整理     选择自 rexsp 的 Blog
关键字   加密
出处  
  这个类是我在网上参考了几个文档总结出来的,测试过可以直接用,后面有一段MD5的,应该独立成一个类的,我懒,所以测试的时候就写到一个文件里了,感觉还是满实用的,如果有什么机密文件,就用这个东西处理一下,将来要看的时候再反过来处理一下,只是你不要忘记了密码就对了,如果你跟我一样懒,你直接把下面的代码拷贝下来直接用吧。
using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Web;

namespace Test.Com
{
/// <summary>
 /// DESEncryptor 的摘要说明。
 /// </summary>
 public class DESEncryptor
 {
  #region 私有成员
  /// <summary>
  /// 输入字符串
  /// </summary>
  private string inputString=null;
  /// <summary>
  /// 输出字符串
  /// </summary>
  private string outString=null;
  /// <summary>
  /// 输入文件路径
  /// </summary>
  private string inputFilePath=null;
  /// <summary>
  /// 输出文件路径
  /// </summary>
  private string outFilePath=null;
  /// <summary>
  /// 加密密钥
  /// </summary>
  private string encryptKey=null;
  /// <summary>
  /// 解密密钥
  /// </summary>
  private string decryptKey=null;
  /// <summary>
  /// 提示信息
  /// </summary>
  private string noteMessage=null;
  #endregion
  #region 公共属性
  /// <summary>
  /// 输入字符串
  /// </summary>
  public string InputString
  {
   get{return inputString;}
   set{inputString=value;}
  }
  /// <summary>
  /// 输出字符串
  /// </summary>
  public string OutString
  {
   get{return outString;}
   set{outString=value;}
  }
  /// <summary>
  /// 输入文件路径
  /// </summary>
  public string InputFilePath
  {
   get{return inputFilePath;}
   set{inputFilePath=value;}
  }
  /// <summary>
  /// 输出文件路径
  /// </summary>
  public string OutFilePath
  {
   get{return outFilePath;}
   set{outFilePath=value;}
  }
  /// <summary>
  /// 加密密钥
  /// </summary>
  public string EncryptKey
  {
   get{return encryptKey;}
   set{encryptKey=value;}
  }
  /// <summary>
  /// 解密密钥
  /// </summary>
  public string DecryptKey
  {
   get{return decryptKey;}
   set{decryptKey=value;}
  }
  /// <summary>
  /// 错误信息
  /// </summary>
  public string NoteMessage
  {
   get{return noteMessage;}
   set{noteMessage=value;}
  }
  #endregion
  #region 构造函数
  public DESEncryptor()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }
  #endregion
  #region DES加密字符串
  /// <summary>
  /// 加密字符串
  /// 注意:密钥必须为8位
  /// </summary>
  /// <param name="strText">字符串</param>
  /// <param name="encryptKey">密钥</param>
  public  void  DesEncrypt()
  {
   byte[] byKey=null;  
   byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
   try
   {
    byKey = System.Text.Encoding.UTF8.GetBytes(this.encryptKey.Substring(0,8));
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    byte[] inputByteArray = Encoding.UTF8.GetBytes(this.inputString);
    MemoryStream ms = new  MemoryStream();
    CryptoStream cs = new  CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write) ;
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    this.outString=Convert.ToBase64String(ms.ToArray());
   }
   catch(System.Exception error)
   {
    this.noteMessage=error.Message;
   }
  }
  #endregion
  #region DES解密字符串
  /// <summary>
  /// 解密字符串
  /// </summary>
  /// <param name="this.inputString">加了密的字符串</param>
  /// <param name="decryptKey">密钥</param>
  public void DesDecrypt()
  {
   byte[] byKey = null;
   byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
   byte[] inputByteArray = new Byte[this.inputString.Length];
   try
   {
    byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0,8));
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    inputByteArray = Convert.FromBase64String(this.inputString);
    MemoryStream ms = new MemoryStream();
    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    System.Text.Encoding encoding = new System.Text.UTF8Encoding();
    this.outString=encoding.GetString(ms.ToArray());
   }
   catch(System.Exception error)
   {
    this.noteMessage=error.Message;
   }
  }
  #endregion
  #region DES加密文件
  /// <summary>
  /// DES加密文件
  /// </summary>
  /// <param name="this.inputFilePath">源文件路径</param>
  /// <param name="this.outFilePath">输出文件路径</param>
  /// <param name="encryptKey">密钥</param>
  public void FileDesEncrypt()
  {
   byte[] byKey=null;  
   byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
   try
   {
    byKey = System.Text.Encoding.UTF8.GetBytes(this.encryptKey.Substring(0,8));
    FileStream fin = new FileStream(this.inputFilePath, FileMode.Open, FileAccess.Read);
    FileStream fout = new FileStream(this.outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
    fout.SetLength(0);
    //Create variables to help with read and write.
    byte[] bin  = new byte[100]; //This is intermediate storage for the encryption.
    long rdlen  = 0;              //This is the total number of bytes written.
    long totlen = fin.Length;    //This is the total length of the input file.
    int  len;                     //This is the number of bytes to be written at a time.
    DES des = new DESCryptoServiceProvider();         
    CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
               
 
    //Read from the input file, then encrypt and write to the output file.
    while(rdlen < totlen)
    {
     len = fin.Read(bin, 0, 100);
     encStream.Write(bin, 0, len);
     rdlen = rdlen + len;
    }
 
    encStream.Close(); 
    fout.Close();
    fin.Close();    
   

   }
   catch(System.Exception error)
   {
    this.noteMessage=error.Message.ToString();
   
   }
  }
  #endregion
  #region DES解密文件
  /// <summary>
  /// 解密文件
  /// </summary>
  /// <param name="this.inputFilePath">加密了的文件路径</param>
  /// <param name="this.outFilePath">输出文件路径</param>
  /// <param name="decryptKey">密钥</param>
  public void FileDesDecrypt()
  {
   byte[] byKey = null;
   byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};   
   try
   {
    byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0,8));
    FileStream fin = new FileStream(this.inputFilePath, FileMode.Open, FileAccess.Read);
    FileStream fout = new FileStream(this.outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
    fout.SetLength(0);
    //Create variables to help with read and write.
    byte[] bin  = new byte[100]; //This is intermediate storage for the encryption.
    long rdlen  = 0;              //This is the total number of bytes written.
    long totlen = fin.Length;    //This is the total length of the input file.
    int  len;                     //This is the number of bytes to be written at a time.
    DES des = new DESCryptoServiceProvider();         
    CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
                
 
    //Read from the input file, then encrypt and write to the output file.
    while(rdlen < totlen)
    {
     len = fin.Read(bin, 0, 100);
     encStream.Write(bin, 0, len);
     rdlen = rdlen + len;    
    }
 
    encStream.Close(); 
    fout.Close();
    fin.Close();    
   }
   catch(System.Exception error)
   {
    this.noteMessage=error.Message.ToString();
   }
  }
  #endregion
  #region MD5
  /// <summary>
  /// MD5 Encrypt
  /// </summary>
  /// <param name="strText">text</param>
  /// <returns>md5 Encrypt string</returns>
  public void MD5Encrypt()
  {
   MD5 md5 = new MD5CryptoServiceProvider();
   byte[] result = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(this.inputString));  
   this.outString=System.Text.Encoding.Default.GetString(result);
  }
  #endregion
 
 }
}
  

相关文章
对该文的评论
CSDN 网友 ( 2005-09-26)
不支持中文
521zhou ( 2004-05-30)
还行。。支持
cll007 ( 2004-04-22)
Look
szlen ( 2004-04-18)
◢█◤★C#开发的邮件搜索工具免费共享◢█◤★◢█
下载地址:http://www.szlon.com
fielding ( 2004-04-18)
很不错