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]タグを使用することについては正しいです (これは確かに、それを行うための 1 つの良い方法です)。

私はよく次のように埋め込みます。

[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 に答える