/ / Bouncy Castle Nie je dešifrovanie DoFinal z Javy v C # - c #, java, bouncycastle

Bouncy Castle nie je dešifrovanie DoFinal z Java v C # - c #, java, bouncycastle

Snažím sa dešifrovať dáta, ktoré sú šifrovanépomocou knižnice Bouncy Castle v jazyku Java s kódom C #. Dáta, ktoré sú šifrované v jazyku Java (opäť s knižnicami Bouncy Castle), možno dekódovať pomocou jazyka Java. Ja som pomocou rovnakých kľúčov a parametrov, ale keď som sa dostať DoFinal dostanem chybu "pad blok poškodený".

Tu je Java:

KeyParameter keyParam = new KeyParameter(key);
CipherParameters param = new ParametersWithIV(keyParam, initVector);

BlockCipherPadding padding = new PKCS7Padding();
BufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new CBCBlockCipher(new AESEngine()), padding);
cipher.reset();
cipher.init(true, param);

byte[] fileBytes = Base64.decodeBase64(decryptedStringData);
byte[] encrypted = new byte[cipher.getOutputSize(fileBytes.length)];
int l = cipher.processBytes(fileBytes, 0, fileBytes.length, encrypted, 0);
l += cipher.doFinal(encrypted, l);

return (Base64.encodeBase64String(encrypted));

Tu je C #:

KeyParameter keyParam = new KeyParameter(key);
ICipherParameters param = new ParametersWithIV(keyParam, initVector);

IBlockCipherPadding padding = new Pkcs7Padding();
BufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new CbcBlockCipher(new AesEngine()), padding);
cipher.Reset();
cipher.Init(false, param);

byte[] fileBytes = Convert.FromBase64String(encryptedDataString);
byte[] decrypted = new byte[cipher.GetOutputSize(fileBytes.Length)];
int l = cipher.ProcessBytes(fileBytes, 0, fileBytes.Length, decrypted, 0);
l += cipher.DoFinal(decrypted, l);

return(Convert.ToBase64String(decrypted));

Vytváram 32 bajtov PBK pre kľúč založený na hash, ktorý bol buffered ... však sme skontrolovali kľúč vytvorený medzi Java a C # a sú rovnaké.

odpovede:

1 pre odpoveď č. 1

Ukazuje sa, že poskytnuté údaješifrovanie a dešifrovanie boli zakódované v rôznych formátoch. Ťahal som do utf-8 kódovaných reťazcov, aby sa dešifroval, a museli sa najprv vytvoriť do reťazcov Base64. Ďakujeme za všetku poskytnutú pomoc.