我有一個「壞數據異常」試圖解密C#。任何幫助,使用DES將great.here一個文件時,是我的代碼:壞數據異常
namespace encrypte
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
static void EncryptFile(string sInputFilename, string sOutputFilename, string sKey)
{
FileStream fsInput = new FileStream(sInputFilename,FileMode.Open, FileAccess.Read);
FileStream fsEncrypted = new FileStream(sOutputFilename,FileMode.Create,FileAccess.Write);
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Mode = CipherMode.CFB;
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.Padding = PaddingMode.ISO10126;
ICryptoTransform desencrypt = DES.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(fsEncrypted,desencrypt,CryptoStreamMode.Write);
byte[] bytearrayinput = new byte[fsInput.Length - 1];
fsInput.Read(bytearrayinput, 0, bytearrayinput.Length);
cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length);
cryptostream.FlushFinalBlock();
fsInput.Close();
fsEncrypted.Close();
}
static void DecryptFile(string sInputFilename,string sOutputFilename,string sKey)
{
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.Mode = CipherMode.CFB;
DES.Padding = PaddingMode.ISO10126;
FileStream fsread = new FileStream(sInputFilename,FileMode.Open,FileAccess.Read);
ICryptoTransform desdecrypt = DES.CreateDecryptor();
CryptoStream cryptostreamDecr = new CryptoStream(fsread, desdecrypt,CryptoStreamMode.Read);
StreamWriter fsDecrypted = new StreamWriter(sOutputFilename);
fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd());
fsDecrypted.Flush();
fsDecrypted.Close();
}
private void button1_Click(object sender, EventArgs e)
{
EncryptFile(@"E:\a.wmv", @"E:\b.wmv", "abcdefgh");
}
private void button2_Click(object sender, EventArgs e)
{
DecryptFile(@"E:\b.wmv", @"E:\c.wmv", "abcdefgh");
}
}
}
我得到了一個「壞數據「異常: fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd());
你在這裏面臨什麼問題?在發生此異常的地方提供詳細的異常消息和行號。 – Yasser
您正在使用TextReader/TextWriter進行解密。這是錯誤的。 – leppie
當我添加cryptostream.FlushFinalBlock();在encrypte函數中,我得到了一個大於加密大小的解密文件(b.wmv爲22.6mb,c.wmv爲39.3 mb)。 –