зашифрованный текст делается в Java (который у нас нет никакого JAVA фона вообще)3DES (DESede) - Расшифровать зашифрованный текст (сделано по JAVA) в C#
дешифрования будет находиться в C#, и вот код
public static string DecryptString(string Message, string Passphrase)
{
byte[] Results;
UTF8Encoding UTF8 = new UTF8Encoding();
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase));
// byte[] TDESKey = UTF8.GetBytes(Passphrase);
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
TDESAlgorithm.Key = TDESKey;
// TDESAlgorithm.Mode = CipherMode.CTS;
TDESAlgorithm.Padding = PaddingMode.Zeros;
byte[] DataToDecrypt = Convert.FromBase64String(Message);
try
{
ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor();
Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);
}
finally
{
TDESAlgorithm.Clear();
HashProvider.Clear();
}
return Encoding.UTF8.GetString(Results);
}
Зашифрованные Java код
public String encryptData(String privateKey, String rawData)
{
Cipher cipher = null;
try
{
cipher = Cipher.getInstance(DESEDE_ENCRYPTION_SCHEME);
cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(privateKey));
byte[] plainText = rawData.getBytes(UNICODE_FORMAT);
byte[] encryptedText = cipher.doFinal(plainText);
return new String(Base64.encodeBase64(encryptedText));
}
}
Однако, когда пытался расшифровать, получил сообщение об ошибке: Неверные данные
Где я здесь отсутствую?
AFAIK, 'DESEDE_ENCRYPTION_SCHEME' возвращает экземпляр 3DES в режиме« ECB », тогда как .NET« TripleDESCryptoServiceProvider() »по умолчанию используется в режиме« CBC ». Установите 'TDESAlgorithm.Mode = CipherMode.ECB' –
Как именно определяется' DESEDE_ENCRYPTION_SCHEME'? Другие проблемы: a) Поставщик Oracle JCE не поддерживает 'PaddingMode.Zeros'. Вам нужно будет использовать BouncyCastle. b) Вы не делаете вывод ключей MD5 в Java. Кроме того, не извлекайте ключ через один вызов MD5. Если у вас есть пароли, вам нужно использовать правильную схему, такую как PBKDF2 или Argon2. –