c#实现des加密中,对于解密还是有问题,请教下谁能帮我解决这个问题或者谁能帮我改动下,不甚感激。
using System;
using System.IO;
using System.Data;
using System.Text;
using System.Diagnostics;
using System.Security;
using System.Security.Cryptography;class Des
{
    //方法 
    //加密方法 
    public string Encrypt(string pToEncrypt, string sKey)
    {        DESCryptoServiceProvider des = new DESCryptoServiceProvider();        //把字符串放到byte数组中 
        //原来使用的UTF8编码,我改成Unicode编码了,不行         byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);        //byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt); 
        //建立加密对象的密钥和偏移量 
        //原文使用ASCIIEncoding.ASCII方法的GetBytes方法 
        //使得输入密码必须输入英文文本 
        if (sKey.Length != 8) return ("wrong key");        des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
        des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);        //Write the byte array into the crypto stream         //(It will end up in the memory stream)         cs.Write(inputByteArray, 0, inputByteArray.Length);
        cs.FlushFinalBlock();
        //Get the data back from the memory stream, and into a string 
        StringBuilder ret = new StringBuilder();
        foreach (byte b in ms.ToArray())
        {
            //Format as hex 
            ret.AppendFormat("{0:X2}", b);
        }        ret.ToString();
        return ret.ToString();
    }    //解密方法     public string Decrypt(string pToDecrypt, string sKey)
    {        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        //Put the input string into the byte array 
        try
        {
            byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
            for (int x = 0; x < pToDecrypt.Length / 2; x++)
            {
                int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
                inputByteArray[x] = (byte)i;
            }
            //建立加密对象的密钥和偏移量,此值重要,不能修改 
            //inputByteArray = Convert.FromBase64String(pToDecrypt);             des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
            des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            StringBuilder ret = new StringBuilder();
            return System.Text.Encoding.Default.GetString(ms.ToArray());        }
        catch (Exception ef)
        {
            return ef.Message;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Des des1 = new Des();
            Console.WriteLine("请输入字符串:");
            string str = Console.ReadLine();
            Console.WriteLine("加密后:");
            Console.WriteLine(des1.Encrypt(str, "12345678"));
            Console.WriteLine("解密后:");
            Console.WriteLine(des1.Decrypt(str, "12345678"));
            Console.Read();
        }
    }
}