0
DES 암호화에서 파일의 암호를 해독하는 코드가 있습니다. 키가 암호화 된 암호를 해독 할 때 키를 입력하더라도 파일을 계속 가져 오려고합니다. 하지만 오류가 발생했습니다. 나는 실행중인 프로세스가 해독 유지하기 위해 추가하거나 변경해야 코드잘못된 키가있는 경우 파일의 암호 해독이 잘못되었습니다.
while ((data = cryptostreamDecr.ReadByte()) != -1) // Message Error : Bad Data.
?
private static void DecryptFile(string sInputFilename, string sKey)
{
var DES = new DESCryptoServiceProvider();
DES.Key = Encoding.ASCII.GetBytes(sKey);
DES.IV = Encoding.ASCII.GetBytes(sKey);
ICryptoTransform desdecrypt = DES.CreateDecryptor();
using (var fsread = new FileStream(sInputFilename, FileMode.Open,
FileAccess.ReadWrite))
{
using (var cryptostreamDecr = new CryptoStream(fsread,
desdecrypt,
CryptoStreamMode.Read))
{
int data;
fsread.Flush();
using (var ms = new MemoryStream())
{
while ((data = cryptostreamDecr.ReadByte()) != -1)
{
ms.WriteByte((byte)data);
}
cryptostreamDecr.Close();
using (var fsWrite = new FileStream(sInputFilename, FileMode.Truncate))
{
ms.WriteTo(fsWrite);
ms.Flush();
}
}
}
}
}
암호화 코드 :
가 가 가는 [EDIT]
public static void EncryptFile(string sInputFilename, string sKey) { FileStream fsInput = new FileStream(sInputFilename, FileMode.Open, FileAccess.ReadWrite); DESCryptoServiceProvider DES = new DESCryptoServiceProvider(); DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey); DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey); ICryptoTransform desencrypt = DES.CreateEncryptor(); CryptoStream cryptostream = new CryptoStream(fsInput, desencrypt, CryptoStreamMode.Write); byte[] bytearrayinput = new byte[fsInput.Length]; fsInput.Read(bytearrayinput, 0, bytearrayinput.Length); fsInput.SetLength(0); cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length); cryptostream.FlushFinalBlock(); cryptostream.Close(); fsInput.Close(); }
: Encypt에서 제거 :
cryptostream.FlushFinalBlock();
를 해독
DES.Padding = PaddingMode.None;
예, 암호 해독 프로세스에서 키를 삽입하려고하면 암호가 잘못되었을 때와 다른 8 문자를 사용합니다. 나쁜 데이터입니다. – sloqye
암호 해독 매개 변수에서 출력 대상 파일을 사용하지 않았습니다. 문제 일 경우? – sloqye
나는 그것을했다. 그러나 같은 줄에 같은 오류가 있습니다. 내 ecrypt 코드를 게시했습니다. – sloqye