using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;using System.Security.Cryptography;
namespace WebApplication1
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           EncryptData(Server.MapPath("~/inFile.txt"), Server.MapPath("~/outFile.txt"), "yuna1234");
           DecryptData(Server.MapPath("~/outFile.txt"), Server.MapPath("~/outFile22222.txt"), "yuna1234");
            
        }
        // DES加密过程
        public void EncryptData(string sourceFile, string destinationFile, string cryptoKey)
        {
            DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
            desProvider.Key = ASCIIEncoding.ASCII.GetBytes(cryptoKey);
            desProvider.GenerateIV();
            ICryptoTransform desEnctypt = desProvider.CreateEncryptor();            FileStream inFileStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read);
            FileStream outFileStream = new FileStream(destinationFile, FileMode.Create, FileAccess.Write);            CryptoStream cryptoStream = new CryptoStream(outFileStream, desEnctypt, CryptoStreamMode.Write);            byte[] byteArrayInput = new byte[inFileStream.Length-1];
            inFileStream.Read(byteArrayInput, 0, byteArrayInput.Length);            cryptoStream.Write(byteArrayInput, 0, byteArrayInput.Length);            cryptoStream.Close();
            inFileStream.Close();
            outFileStream.Close();        }
        // DES解密过程
        public void DecryptData(string sourceFile, string destinationFile, string cryptoKey)
        {
            DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
            desProvider.Key = ASCIIEncoding.ASCII.GetBytes(cryptoKey);
            desProvider.GenerateIV();            ICryptoTransform desEnctypt = desProvider.CreateDecryptor();
            
            FileStream decrptedFile = new FileStream(sourceFile, FileMode.Open, FileAccess.Read);            CryptoStream cryptoStream = new CryptoStream(decrptedFile, desEnctypt, CryptoStreamMode.Read);            StreamWriter decryptedOutput = new StreamWriter(destinationFile);
            
            decryptedOutput.Write(new StreamReader(cryptoStream).ReadToEnd());
            decryptedOutput.Flush();
            decryptedOutput.Close();
            cryptoStream.Close();
            decrptedFile.Close();
        }
    }
}

解决方案 »

  1.   

    于娜 也是.net的 嘿嘿~
    不过真小气哈才10分。
    desProvider.Key = ASCIIEncoding.ASCII.GetBytes(cryptoKey); 
    改为这样  试下
     System.Text.ASCIIEncoding.UTF8.GetBytes(cryptoKey);
      

  2.   

    我这有关于加密与解密的方法  你用这个吧很好用。    private  byte[] DESKey = new byte[] { 11, 23, 93, 102, 72, 41, 18, 12 };
        private  byte[] DESIV = new byte[] { 75, 158, 46, 97, 78, 57, 17, 36 };   
        //加密函數:  
        public string Encode(string Encode_String)
        {
            DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
            MemoryStream objMemoryStream = new MemoryStream();
            CryptoStream objCryptoStream = new CryptoStream
                (objMemoryStream, objDES.CreateEncryptor(DESKey, DESIV), CryptoStreamMode.Write);
            StreamWriter objStreamWriter = new StreamWriter(objCryptoStream);
            objStreamWriter.Write(Encode_String);
            objStreamWriter.Flush();
            objCryptoStream.FlushFinalBlock();
            objMemoryStream.Flush();
            return Convert.ToBase64String(objMemoryStream.GetBuffer(), 0, (int)
                  objMemoryStream.Length);
        }    private byte[] DESKey = new byte[] { 11, 23, 93, 102, 72, 41, 18, 12 };
        private byte[] DESIV = new byte[] { 75, 158, 46, 97, 78, 57, 17, 36 };    //解密函數  
        public string Decode(string Encode_String)
        {
            DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
            byte[] Input = Convert.FromBase64String(Encode_String);
            MemoryStream objMemoryStream = new MemoryStream(Input);
            CryptoStream objCryptoStream = new CryptoStream
                  (objMemoryStream, objDES.CreateDecryptor(DESKey, DESIV), CryptoStreamMode.Read);
            StreamReader objStreamReader = new StreamReader(objCryptoStream);
            return objStreamReader.ReadToEnd();
        }  
      

  3.   

    更简单的。
    加密
    SELECT EncryptByPassPhrase(N'这是密码,用来加密的','这是要加密的内容')
    解密 
    SELECT CONVERT(NVARCHAR(50),DECRYPTBYPASSPHRASE(N'这是密码,用来加密的',字段))