0

我有一个作为文件发送给我的密钥,因此我可以使用 Blowfish 加密一些 xml 数据。如何访问密钥以便可以将其与 AS3Crypto 一起使用?我假设我需要使用 [Embed] 元标记嵌入它。它是 mimeType="application/octet-stream" 但我不确定这是否正确。如何嵌入,然后将此文件作为密钥引用?我正在加密的 xml 无法在 Java 端解密。每次尝试都失败,但出现以下异常:

javax.crypto.BadPaddingException:给定最终块未正确填充。

作为奖励,如果有人有使用 lib 来处理 Java 实现的经验并且知道使用的理想模式/填充/IV,那将是很棒的。谢谢!

//keyFile is an embedded asset. I was given a file to use as the key
var kdata:ByteArray = new keyFile() as ByteArray;

//Convert orderXML to Base64
var orderData:ByteArray = Base64.decodeToByteArray(String(orderXML));

//Cipher name   
var cname:String = "simple-blowfish-ecb";

var pad:IPad = new PKCS5;
var mode:ICipher = Crypto.getCipher(cname, kdata, pad);

//not sure if this is necessary. seems to be also set in mode
pad.setBlockSize(mode.getBlockSize());

mode.encrypt(orderData);

var transmitXML:String = Base64.encodeByteArray(orderData);

//DEBUG: Output to TextArea
storePanel.statusBox.text += "\n--TRANSMIT--\n"+transmitXML;
4

1 回答 1

1

不知道如果您仍然不确定如何嵌入二进制数据,但您对使用[Embed]标签的看法是正确的(这当然是一种很好的方法)。

我经常这样嵌入:

[Embed(source="myKeyFile.key", mimeType="application/octet-stream")]
private const _KeyFile:Class;
private var keyFile:ByteArray = new _KeyFile();

...

trace(keyFile.length + " bytes"); // XYZ bytes

更多信息: http ://dispatchevent.org/roger/embed-almost-anything-in-your-swf/

于 2010-09-01T02:48:41.123 回答