MD5 TripleDES Шифрование в Java NoPadding Проблема - PullRequest
0 голосов
/ 29 апреля 2020

Мне нужно зашифровать данные в Java с помощью этого "DESede / CBC / NoPadding" , потому что в C# оно будет расшифровано следующим образом:

C# Код

            MD5CryptoServiceProvider hashProvider = new MD5CryptoServiceProvider();
            TripleDESCryptoServiceProvider tripDES = new TripleDESCryptoServiceProvider();

            // MD5 the key
            byte[] tdeskey = hashProvider.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
            // Set Key
            tripDES.Key = tdeskey;
            // Set IV
            tripDES.IV = UTF8.GetBytes(iv);
            // Use CBC for mode
            tripDES.Mode = CipherMode.CBC;
            // Zero Padding
            tripDES.Padding = PaddingMode.Zeros;

Но когда я пытаюсь это сделать, у меня возникает такая ошибка:

javax.crypto.IllegalBlockSizeException: Input length not multiple of 8 bytes

Поэтому я изменяю ее на DESede / CBC / PKCS5Padding . Но теперь C# не может прочитать его, так как PaddingMode.Zeros установлен в приведенном выше коде.

Есть ли у вас какие-либо идеи, как я могу зашифровать его, придерживаясь NoPaddingMode?

...