我有一个秘密密钥作为文件发送给我,所以我可以使用Blowfish加密一些xml数据。如何访问密钥以便我可以将其与AS3Crypto一起使用?我假设我需要使用[Embed]元标记嵌入它。它是mimeType =“application / octet-stream”,但我不确定这是否正确。我如何嵌入,然后将此文件作为密钥引用?我正在加密的xmls无法在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;
答案 0 :(得分:1)
Dunno如果你仍然不确定如何嵌入二进制数据,但是你使用[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/