이전에 암호화 된 데이터의 해독에 문제가 있습니다. 나는 트리플 DES 효과를 얻기 위해 3 개의 서로 다른 키로 암호화 암호화 - 암호 해독 암호화를 사용하고 있습니다. 암호화 기능이 올바르게 작동하지만 8 바이트 배열을 반환하지만 암호 해독 함수는 빈 배열을 반환합니다.DES ECB C# 암호화/암호 해독
public static byte[] EncryptDES(byte[] clearData, byte[] key)
{
DES desEncrypt = new DESCryptoServiceProvider();
desEncrypt.Mode = CipherMode.ECB;
desEncrypt.Key = key;
ICryptoTransform transForm = desEncrypt.CreateEncryptor();
MemoryStream encryptedStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(encryptedStream, transForm, CryptoStreamMode.Write);
cryptoStream.Write(clearData, 0, clearData.Length);
byte [] encryptedData = encryptedStream.ToArray();
return encryptedData;
}
public static byte[] DecryptDES(byte[] clearData, byte[] key)
{
DES desDecrypt = new DESCryptoServiceProvider();
desDecrypt.Mode = CipherMode.ECB;
desDecrypt.Key = key;
ICryptoTransform transForm = desDecrypt.CreateDecryptor();
MemoryStream decryptedStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(decryptedStream, transForm, CryptoStreamMode.Write);
cryptoStream.Write(clearData, 0, clearData.Length);
byte[] encryptedData = decryptedStream.ToArray();
return encryptedData;
}
public static byte[] Encrypt3DES(byte[] clearData, byte[] key0, byte[] key1, byte[] key2)
{
byte[] encryptedData1 = new byte[clearData.Length];
byte[] encryptedData2 = new byte[clearData.Length];
byte[] encryptedData3 = new byte[clearData.Length];
encryptedData1 = DESCrypto.EncryptDES(clearData , key0);
encryptedData2 = DESCrypto.DecryptDES(encryptedData1, key1);
encryptedData3 = DESCrypto.EncryptDES(encryptedData2, key2);
return encryptedData3;
}
내가 뭘 잘못하고 있니?
아마도 최종 마무리 (플러시 최종 블록 또는 그와 유사한 것) 또는 패딩 관련. – CodesInChaos
감사합니다. "Flush final block"과 패딩이 도움이되지 않았습니다. – user1421600
btw 왜 처음에는 이상한 일을하고 있습니까? .net에는 3DES 지원이 내장되어 있으며 ECB는 대부분의 응용 프로그램에서 잘못된 선택입니다. – CodesInChaos