파일을 암호화하고 암호화 된 콘텐츠를 동일한 파일에 기록했습니다. 그러나 파일을 해독하고 같은 파일에 쓰려고하면 암호화 된 텍스트 즉 이전 내용을 지울 수 없습니다. 내가 어떻게 그럴 수 있겠 어.파일의 암호를 해독하고 C에서 같은 파일에 쓰기 #
암호화 코드
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.Close();
fsInput.Close();
}
암호 해독 코드
static void DecryptFile(string sInputFilename,
string sKey)
{
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
FileStream fsread = new FileStream(sInputFilename,
FileMode.Open,
FileAccess.ReadWrite);
ICryptoTransform desdecrypt = DES.CreateDecryptor();
CryptoStream cryptostreamDecr = new CryptoStream(fsread,
desdecrypt,
CryptoStreamMode.Read);
int data;
while ((data = cryptostreamDecr.ReadByte()) != -1)
{
fsread.WriteByte((byte)data);
}
fsread.Close();
cryptostreamDecr.Close();
}
던져진 예외는 무엇입니까? – dasheddot
fsread.SetLength (0)를 추가하여 내용을 지우고 오류가 발생했습니다. mscorlib.dll에서 'System.Security.Cryptography.CryptographicException'유형의 처리되지 않은 예외가 발생했습니다. 추가 정보 : 잘못된 데이터. – json
해독 된 파일을 새 이름으로 쓰고, 암호화 된 파일을 삭제하고, 해독 된 파일의 이름을 올바른 이름으로 바꿉니다. (???) – lcryder