为什么我会收到“不良数据”错误?我使用.txt文件作为输入和输出 [英] Why am I getting "BAD DATA" error ? I am using a .txt file as an input and output

查看:57
本文介绍了为什么我会收到“不良数据”错误?我使用.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆