Skip to Main Content

Java Security

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

C# Encryption / Java Decrypt "RC2/CBC/PKCS2": pad block corrupted

843811Nov 19 2007 — edited Nov 22 2007
I have 24 bytes of data encrypted using C# (RC2, 40bit Key, 64 bit Blocksize, CBC Mode, Probably PKCS7, IV + Salt) and I have to decrypt it using Java. My testing decryption implementation in C# already worjks but the Java one doesn't.
Using the BouncyCastle library, I have implemented the following code:
RC2ParameterSpec rc2Spec = new RC2ParameterSpec(40, IV);
Cipher c2 = Cipher.getInstance("RC2/CBC/PKCS7Padding", "BC");  // PBEWithMD5AndRC2
SecureRandom secRand = new SecureRandom(salt);
c2.init(Cipher.DECRYPT_MODE, cKey, rc2Spec, secRand);
decryptedMessage = c2.doFinal(bufferEncrypted);
I get the exception:
javax.crypto.BadPaddingException: pad block corrupted
	at org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(Unknown Source)
	at javax.crypto.Cipher.doFinal(DashoA12275)
[...]
Does anyone knows something aboutt his issue? Maybe the padding mode PKCS7 is wrong, but the (working) C# Code tells me that....
RC2CryptoServiceProvider rc2;
            rc2 = new RC2CryptoServiceProvider();
            rc2.Mode = CipherMode.CBC;
            rc2.KeySize = 40;
            rc2.EffectiveKeySize = 40;
            rc2.BlockSize = 64;
            rc2.FeedbackSize = 8;
            rc2.IV = IV;
            rc2.UseSalt = true;  
            rc2.Key = bufferKey;
            
            rtBox.AppendText("padding: " + rc2.Padding + "\n"); // Shows "PKCS7"

            ICryptoTransform decryptor = rc2.CreateDecryptor();

            byte[] bufferDecoded = new byte[16/*bufferData.Length*/];
            MemoryStream ms = new MemoryStream(bufferEncrypted);
            CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read);
            cs.Read(bufferDecoded, 0, bufferDecoded.Length);
I would be very glad if someone could help?

But please don't propose a different encryption algorithm. The data is encrypted by someone else and I don't have any influence on that!
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 20 2007
Added on Nov 19 2007
18 comments
3,951 views