为什么我会收到“不良数据”错误?我使用.txt文件作为输入和输出 [英] Why am I getting "BAD DATA" error ? I am using a .txt file as an input and output
本文介绍了为什么我会收到“不良数据”错误?我使用.txt文件作为输入和输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
static void decrypt( string inputFile, string outFile, string key)
{
FileStream input = new FileStream(inputFile,FileMode.OpenOrCreate,FileAccess.Read);
// FileStream output = new FileStream(outFile,FileMode.OpenOrCreate,FileAccess.ReadWrite);
DESCryptoServiceProvider desKeys = new DESCryptoServiceProvider();
desKeys.Key = ASCIIEncoding.ASCII.GetBytes(key);
desKeys.IV = ASCIIEncoding.ASCII.GetBytes(key);
CryptoStream decrypt = new CryptoStream(input,desKeys.CreateDecryptor(),CryptoStreamMode.Read);
StreamWriter decrypted = new StreamWriter(outFile);
decrypted.Write( new StreamReader(decrypt).ReadToEnd());
decrypted.Flush();
decrypted.Close();
input.Close();
}
解决方案
您可以使用以下代码解决您的问题
加密:
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.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = DES.Key;
ICryptoTransform desencrypt = DES.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(fsEncrypted,desencrypt,CryptoStreamMode.Write);
byte [] bytearrayinput = new byte [fsInput.Length];
fsInput.Read(bytearrayinput,0,bytearrayinput.Length);
cryptostream.Write(bytearrayinput,0,bytearrayinput.Length);
cryptostream.Close();
fsInput.Close();
fsEncrypted.Close();
}
解密:
static void DecryptFile(string sInputFilename,string sOutputFilename,string sKey)
{
try
{
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
FileStream fsDecrypted = new FileStream(sOutputFilename,FileMode.Create,FileAccess.Write);
//此提供程序需要64位密钥和IV。
//设置密钥用于DES算法。
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
//设置初始化向量。
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
//创建一个文件流以重新读取加密文件。
FileStream fsread = new FileStream(sInputFilename,FileMode.Open,FileAccess.Read);
//从DES实例创建DES解密器。
ICryptoTransform desdecrypt = DES.CreateDecryptor();
CryptoStream cryptostream = new CryptoStream(fsDecrypted,desdecrypt,CryptoStreamMode.Write);
byte [] bytearrayinput = new byte [fsread.Length];
fsread.Read(bytearrayinput,0,bytearrayinput.Length);
cryptostream.Write(bytearrayinput,0,bytearrayinput.Length);
cryptostream.Close();
fsread.Close();
fsDecrypted.Close();
}
catch(例外e)
{
Console.WriteLine(e.Message);
Console.ReadKey();
}
}
看起来钥匙没有在我的主要正确传递
谢谢所有
static void decrypt(string inputFile,string outFile,string key)
{
FileStream input = new FileStream(inputFile, FileMode.OpenOrCreate, FileAccess.Read);
//FileStream output = new FileStream(outFile, FileMode.OpenOrCreate, FileAccess.ReadWrite);
DESCryptoServiceProvider desKeys = new DESCryptoServiceProvider();
desKeys.Key = ASCIIEncoding.ASCII.GetBytes(key);
desKeys.IV = ASCIIEncoding.ASCII.GetBytes(key);
CryptoStream decrypt = new CryptoStream(input, desKeys.CreateDecryptor(), CryptoStreamMode.Read);
StreamWriter decrypted = new StreamWriter(outFile);
decrypted.Write(new StreamReader(decrypt).ReadToEnd());
decrypted.Flush();
decrypted.Close();
input.Close();
}
解决方案
hi use the following code to solve your problem
Encryption:
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.Key = ASCIIEncoding.ASCII.GetBytes(sKey); DES.IV = DES.Key; ICryptoTransform desencrypt = DES.CreateEncryptor(); CryptoStream cryptostream = new CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write); byte[] bytearrayinput = new byte[fsInput.Length]; fsInput.Read(bytearrayinput, 0, bytearrayinput.Length); cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length); cryptostream.Close(); fsInput.Close(); fsEncrypted.Close(); }
Decryption:
static void DecryptFile(string sInputFilename, string sOutputFilename, string sKey) { try { DESCryptoServiceProvider DES = new DESCryptoServiceProvider(); FileStream fsDecrypted = new FileStream(sOutputFilename, FileMode.Create, FileAccess.Write); //A 64 bit key and IV is required for this provider. //Set secret key For DES algorithm. DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //Set initialization vector. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey); //Create a file stream to read the encrypted file back. FileStream fsread = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read); //Create a DES decryptor from the DES instance. ICryptoTransform desdecrypt = DES.CreateDecryptor(); CryptoStream cryptostream = new CryptoStream(fsDecrypted, desdecrypt, CryptoStreamMode.Write); byte[] bytearrayinput = new byte[fsread.Length]; fsread.Read(bytearrayinput, 0, bytearrayinput.Length); cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length); cryptostream.Close(); fsread.Close(); fsDecrypted.Close(); } catch (Exception e) { Console.WriteLine(e.Message); Console.ReadKey(); } }
Looks like the key was not passed correctly in my main
thanks all
这篇关于为什么我会收到“不良数据”错误?我使用.txt文件作为输入和输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文