在我的网站上,我使用 AES 128 位加密/解密字符串。我用 Java 加密了一个字符串,并想在同一网页上运行的 Flash 应用程序中对其进行解密,并将加密的字符串作为 JavaScript 变量传递给该应用程序。
我使用 Java 生成一个 128 位 key 。我可以在Java中成功地进行加密/解密。 Java 输出 key 的字节数组 (byte[])、加密和解密结果。我使用 Base64 编码/解码来成功获得等效的字符串。
在闪存端,我使用 Java 生成的 key (Base64) 来解密字符串,我注意到它没有正确解密。我在flash中使用的加密库是as3crypto 。当我在 demo page of the as3crypto project 上测试时使用 Java 生成的 key (Base64),我注意到使用所有可能的模式(CBC、CFB 等)都没有得到相同的结果。
导致此错误的可能原因是什么?我做错了什么吗?
问候
最佳答案
如果不看一下你的代码就很难说,但是......
有几点需要注意。
AES 加密数据可以在语言之间互换,因此需要考虑的事项很少。
- 相同的加密算法(废话!)
- key 大小相同 (128/192/256)
- 相同的 key
- Same Mode of operation (欧洲央行/CBC/CTS 等)
- Same initialization vector (对于某些操作模式,不适用于 CTS)
- Same Padding scheme
- Character Encoding
您确定 Java 和 ActionScript 之间的所有这些都是相同的吗?
关于java - 使用 Java 1.5 和 ActionScript as3crypto 进行 AES 加密/解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5578701/