Crypter / Décrypter BCE / PKS5 / Blowfish entre AS3Crypto & javax.crypto échoue avec l'erreur de remplissage

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

Question

J'ai une clé secrète qui m'a été envoyé comme un fichier afin que je puisse chiffrer des données XML en utilisant Blowfish. Comment puis-je accéder à la clé pour que je puisse l'utiliser avec AS3Crypto? Je suppose que je dois l'intégrer en utilisant la balise meta [Embed]. Il est mimeType = « application / octet-stream » mais je ne suis pas sûr si c'est bon. Comment puis-je intégrer, référence ensuite ce fichier comme la clé secrète? Les xmls que je ne peut pas être le cryptage déchiffrées sur le côté Java. Chaque tentative échoue à cette exception:

javax.crypto.BadPaddingException: bloc donné finale pas correctement rembourré.

En prime, si quelqu'un a de l'expérience en utilisant le répertoire lib pour travailler avec l'implémentation Java et connaît le mode idéal / remplissage / IV à utiliser ce serait génial. Merci!

//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;
Était-ce utile?

La solution

J'sais si vous ne savez toujours pas sur la façon d'intégrer des données binaires, mais vous avez raison sur l'utilisation de la balise [Embed] (il est certainement une bonne façon de le faire).

Je souvent comme ça l'intégrer:

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

...

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

Plus d'infos: http://dispatchevent.org/roger/embed-almost-anything -Dans votre-swf /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top