0
votes

On my website I am using AES 128bit encryption/decryption of a string. I encrypt a string in Java and I want to decrypt it in a flash application that I run on the same webpage, to which I pass the encrypted string as a JavaScript variable.

I generate a 128bit key using Java. I can do encryption/decryption in Java successfully. Java outputs byte-array (byte[]) for the key, encrypted and decrypted result. I use Base64 encoding/decoding to successfully get the string equivalent.

On the flash side I use the Java generated key (Base64) to do the decryption of the string and I noticed that it is not correctly decrypted. The cryptography library that I use in flash is as3crypto. When I test this on the demo page of the as3crypto project using my Java generated key (Base64) I noticed that I am not getting the same result using all possible modes (CBC, CFB etc.).

What is the possible cause for this error? Am I doing something wrong?

Regards

1

1 Answers

2
votes

Hard to say without taking a look at your code but...

Few things to notice.

AES encrypted data to be interchangeable between languages there are few things to consider.

  1. Same encryption algorithm (duh!)
  2. Same size of the key (128/192/256)
  3. Same key
  4. Same Mode of operation (ECB/CBC/CTS etc)
  5. Same initialization vector (For some modes of operations, doesn't apply for CTS)
  6. Same Padding scheme
  7. Character Encoding

Are you sure that all of these are the same between both Java and ActionScript?