Android Question [Solved]Problem with AES

stefanoxjx

Active Member
Licensed User
Longtime User
Hi, because I need to share data with another application, I'm trying to decode data in AES.
From another application I encryped this string:
Hello from Stefano that trying to encrypt in AES
with password:
12345678901234567890123456789012
and the result is:
Code:
0x74, 0x02, 0x35, 0x19, 0x2E, 0x0E, 0x40, 0x41, 0x27, 0x2F, 0xC4, 0x00,
0xF7, 0xC1, 0x76, 0x9D, 0xE6, 0xC6, 0x76, 0xBA, 0x10, 0xC1, 0x4C, 0xF0,
0xC1, 0x81, 0x98, 0x40, 0x7B, 0x09, 0x3D, 0x1D, 0xE9, 0xD5, 0x53, 0x9F,
0xD4, 0x16, 0xF6, 0x20, 0xDA, 0xEB, 0xC7, 0x9D, 0xE4, 0x5F, 0x7E, 0x74

Now, I can to decrypt this with another application, but not with B4A.
With B4A I receive this error:
Code:
Error occurred on line: 453 (BT_Service)
javax.crypto.IllegalBlockSizeException: error:1e00007b:Cipher functions:OPENSSL_internal:WRONG_FINAL_BLOCK_LENGTH
    at com.android.org.conscrypt.NativeCrypto.EVP_CipherFinal_ex(Native Method)
    at com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER.doFinalInternal(OpenSSLCipher.java:570)
    at com.android.org.conscrypt.OpenSSLCipher.engineDoFinal(OpenSSLCipher.java:351)
    at javax.crypto.Cipher.doFinal(Cipher.java:1736)
    at anywheresoftware.b4a.object.B4XEncryption.Decrypt(B4XEncryption.java:47)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:197)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
    at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:80)
    at android.view.View.performClick(View.java:6291)
    at android.view.View$PerformClick.run(View.java:24931)
    at android.os.Handler.handleCallback(Handler.java:808)
    at android.os.Handler.dispatchMessage(Handler.java:101)
    at android.os.Looper.loop(Looper.java:166)
    at android.app.ActivityThread.main(ActivityThread.java:7523)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

The code used to decrypt is:
Code:
Dim e() As Byte = Array As Byte(0x74, 0x02, 0x35, 0x19, 0x2E, 0x0E, 0x40, 0x41, 0x27, 0x2F, 0xC4, 0x00, _
                                    0xF7, 0xC1, 0x76, 0x9D, 0xE6, 0xC6, 0x76, 0xBA, 0x10, 0xC1, 0x4C, 0xF0, _
                                    0xC1, 0x81, 0x98, 0x40, 0x7B, 0x09, 0x3D, 0x1D, 0xE9, 0xD5, 0x53, 0x9F, _
                                    0xD4, 0x16, 0xF6, 0x20, 0xDA, 0xEB, 0xC7, 0x9D, 0xE4, 0x5F, 0x7E, 0x74)


Dim Cipher As B4XCipher
Dim Decrypted() As Byte
   
Decrypted=Cipher.Decrypt(e, "12345678901234567890123456789012")

Where am I doing wrong?

Thanks.
 
Last edited:
You probably need to use my encryption library and not B4XCipher for third party AES encryption. B4XCipher is unique to B4X and data encrypted with it will have a salt and IV prepended which decrypt would expect. That's why you are getting a block length error as you have only the encrypted data.

My library is here
 
Upvote 0
Hi agraham,
Your library seems to works fine.
Tomorrow I implement in my app.

Many thanks for your help.
 
Upvote 0
Back
Top