日期:2008-11-25  浏览次数:20543 次

 

///<summary>文件加密类 使用DES加密文件流</summary>
///<param>desKey: DES的密钥;desIV: DES向量</param>

class encrypfile{
        public byte[] desKey;
        public byte[] desIV;

        public encrypfile(byte[] inputKey,byte[] inputIV){
            desKey=inputKey;
            desIV=inputIV;

        }

        ///<summary>加密主方法</summary>
        ///<param>inName:被加密文件名;outName: 加密后文件名</param>
        public void begintoencry(string inName,string outName){
            FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
            FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
            fout.SetLength(0);

            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(desKey, desIV), CryptoStreamMode.Write);

            while(rdlen < totlen)
            {
                len = fin.Read(bin, 0, 100);
                encStream.Write(bin, 0, len);
                rdlen = rdlen + len;
            }

                encStream.Close();
                fout.Close();
                fin.Close();
            }
    }


加密字符流
  //pToEncrypt为需要加密字符串,sKey为密钥
  public string Encrypt(string pToEncrypt, string sKey)
  {
   DESCryptoServiceProvider des = new DESCryptoServiceProvider();
   //把字符串放到byte数组中
   byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);

   //建立加密对象的密钥和向量
   des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
   des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);