0
在我的Visual C#加密/解密程序中,我试图独立加密和解密 ,而我试图解密先前加密的数据,我得到一段要解密的数据是无效的错误Visual C#独立解密错误:解密数据的长度无效
String filename;
String filename2;
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK) {
filename = ofd.FileName;
textBox1.Text = filename;
button2.Enabled = true;
}
}
private void button2_Click(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(filename);
String toencrypt = sr.ReadToEnd();
sr.Dispose();
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
UTF8Encoding utf8 = new UTF8Encoding();
TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
tripleDES.Key = md5.ComputeHash(utf8.GetBytes(toencrypt));
tripleDES.Mode = CipherMode.ECB;
tripleDES.Padding = PaddingMode.PKCS7;
ICryptoTransform trans = tripleDES.CreateEncryptor();
String encrypted = BitConverter.ToString(trans.TransformFinalBlock(utf8.GetBytes(textBox2.Text), 0, utf8.GetBytes(textBox2.Text).Length));
StreamWriter sw = new StreamWriter(filename);
sw.Write(encrypted);
sw.Dispose();
}
private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
filename2 = ofd.FileName;
textBox3.Text = filename2;
button4.Enabled = true;
}
}
private void button4_Click(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(filename2);
String todecrypt = sr.ReadToEnd();
sr.Dispose();
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
UTF8Encoding utf8 = new UTF8Encoding();
TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
tripleDES.Key = md5.ComputeHash(utf8.GetBytes(textBox4.Text));
tripleDES.Mode = CipherMode.ECB;
tripleDES.Padding = PaddingMode.PKCS7;
ICryptoTransform trans = tripleDES.CreateDecryptor();
String decrypted = BitConverter.ToString(trans.TransformFinalBlock(utf8.GetBytes(todecrypt), 0, utf8.GetBytes(todecrypt).Length));
StreamWriter sw = new StreamWriter(filename2);
sw.Write(decrypted);
sw.Dispose();
}
基本上我想在这里做的就是打开一个txt文件得到里面的数据进行加密(这工作正常),然后解密(是我的错误)时,它给我的错误我不知道该怎么改变,以解决这个问题,因为数据的长度是使用相同的键和填充以及其他一切适用的...