2011-04-07 77 views
0

在我的网站上,我使用AES 128位加密/解密字符串。我使用Java对字符串进行加密,并且想要在运行在同一网页上的Flash应用程序中对其进行解密,并将加密的字符串作为JavaScript变量传递给该应用程序。使用Java 1.5和ActionScript进行AES加密/解密as3crypto

我使用Java生成128位密钥。我可以成功地在Java中进行加密/解密。 Java为密钥输出字节数组(byte []),加密和解密结果。我使用Base64编码/解码来成功获取字符串等效。

在闪存方面,我使用Java生成的密钥(Base64)来解密字符串,我注意到它没有正确解密。我在闪存中使用的加密库是as3crypto。当我使用Java生成的密钥(Base64)在demo page of the as3crypto project上测试这个时,我注意到我没有使用所有可能的模式(CBC,CFB等)获得相同的结果。

这个错误的可能原因是什么?难道我做错了什么?

问候

回答

2

很难说没有采取看看你的代码,但...

几件事情要注意。

AES加密数据在语言之间可以互换,但有几点需要考虑。

  1. 相同的加密算法(废话!)
  2. 关键的相同的尺寸(128/192/256)
  3. 相同的密钥
  4. Same Mode of operation(ECB/CBC/CTS等)
  5. Same initialization vector(对于一些操作模式,不适用于CTS)
  6. Same Padding scheme
  7. Character Encoding

您确定Java和ActionScript之间的所有这些都相同吗?

+0

我不知道Java中的默认操作模式是什么?我没有在Java中设置一个,所以我不知道Java 1.5使用哪一个。 – Alex 2011-04-07 09:28:35

+0

我认为它必须是这样''Cipher.getInstance(“/<操作模式>/”);'查看链接的问题。 – 2011-04-07 09:31:07

+0

问题是,我甚至无法使用as3crypto(http://crypto.hurlant.com/demo/)的演示页面中的所有可能组合正确解码! – Alex 2011-04-07 09:54:08

相关问题