Не удается зашифровать / расшифровать ECB / PKS5 / Blowfish между AS3Crypto и Javax.Crypto с ошибкой заполнения - PullRequest
0 голосов
/ 15 мая 2009

У меня есть секретный ключ, который был отправлен мне в виде файла, чтобы я мог зашифровать некоторые данные XML с помощью Blowfish. Как получить доступ к ключу, чтобы я мог использовать его с AS3Crypto? Я предполагаю, что мне нужно встроить его, используя метатег [Embed]. Это mimeType = "application / octet-stream", но я не уверен, правильно ли это. Как мне вставить, а затем ссылаться на этот файл как на секретный ключ? Зашифрованные xmls не могут быть расшифрованы на стороне Java. Каждая попытка терпит неудачу с этим исключением:

javax.crypto.BadPaddingException: данный последний блок заполнен неправильно.

В качестве бонуса, если у кого-то есть опыт использования lib для работы с реализацией Java и он знает, какой идеальный режим / padding / 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;

1 Ответ

1 голос
/ 01 сентября 2010

Не знаю, если вы все еще не знаете, как встраивать двоичные данные, но вы правы в использовании тега [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/

...