Crypter / Décrypter BCE / PKS5 / Blowfish entre AS3Crypto & javax.crypto échoue avec l'erreur de remplissage
-
22-08-2019 - |
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;
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 /