日期:2014-05-18  浏览次数:21181 次

DES解密出现-“不正确的数据”和“要解密的数据长度无效”-问题,高手来解决!在线等!
源码如下:
  ///   <summary>
    ///   解密给定的字符串
    ///   </summary>
    ///   <param   name= 'str '> 要解密的字符 </param>
    ///   <returns> </returns>
    public   string   DecryptString(string   str)
    {
              byte[]   ivb=Encoding.ASCII.GetBytes(this.iv);
              byte[]   keyb=Encoding.ASCII.GetBytes(this.EncryptKey);
              byte[]   toDecrypt=this.EncodingMode.GetBytes(str);
              byte[]   deCrypted=new   byte[toDecrypt.Length];
              ICryptoTransform   deCryptor=des.CreateDecryptor(keyb,ivb);
              MemoryStream   msDecrypt=new   MemoryStream(toDecrypt);
              CryptoStream   csDecrypt=new   CryptoStream(msDecrypt,deCryptor,CryptoStreamMode.Read);
              try
              {
                csDecrypt.Read(deCrypted,0,deCrypted.Length);
              }
              catch(Exception   err)
              {
                throw   new   ApplicationException(err.Message);
              }
              finally
              {
                try
                {
                  msDecrypt.Close();
                  csDecrypt.Close();
                }
                catch{;}
              }
              return   this.EncodingMode.GetString(deCrypted);
    }
为什么会出现这个问题?

------解决方案--------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;
using System.IO;

namespace DES加密解密
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
this.textBox2.Text = DESEncrypt( " " + this.textBox1.Text.ToString().Trim() + " ");
}

//加密
public string DESEncrypt(string pToEncrypt)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
try
{
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt)