AS3Crypto&javax.cryptoで間の暗号化/復号化ECB / PKS5 / Blowfishのは、パディングエラーで失敗します

StackOverflow https://stackoverflow.com/questions/869470

質問

私はフグを使用して、いくつかのXMLデータを暗号化することができるようにファイルとして私に送られた秘密鍵を持っています。私はAS3Cryptoで使用できるようにどのように私はキーにアクセスできますか?私は、[埋め込み]メタタグを使用して、それを埋め込む必要があると仮定します。これは、MIMEタイプ=「アプリケーション/オクテットストリーム」ですが、thatsの右かどうかはわかりません。どのように私はその後、秘密鍵として、このファイルを参照し、埋め込むのですか?私は暗号化していますXMLSは、Java側で復号化することができません。各試みは、この例外で失敗します:

javax.crypto.BadPaddingException:与えられた最後のブロックが適切に埋められていません。

ボーナスとして、誰もがJava実装で動作するようにLIBを使用した経験を持っており、それは素晴らしいだろう使用するのに理想的なモード/パディング/ 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;
役に立ちましたか?

解決

知らんあなたはまだバイナリデータを埋め込む方法についてはわからないが、あなたは(それは確かにそれを行うための一つの良い方法です)[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-あなた-swfファイル/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top