J'ai un problème avec le décryptage des données précédemment cryptées. J'utilise le chiffrement séquentiel encrypt-decrypt-encrypt avec trois clés différentes pour obtenir le triple effet. La fonction de chiffrement fonctionne correctement (renvoie un tableau de 8 octets), mais la fonction de déchiffrement renvoie un tableau vide.Cryptage/décryptage 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;
}
Qu'est-ce que je fais mal?
Probablement la finalisation (Vider le bloc final ou quelque chose comme ça) ou le padding lié. – CodesInChaos
Merci, le "(Flush final block" et rembourrage mis à – user1421600
btw pourquoi fais-tu quelque chose d'aussi étrange en premier lieu? .NET a construit en 3DES soutien, et ECB est le mauvais choix dans la plupart des applications aussi. – CodesInChaos