Cifrar / descifrar BCE / PKS5 / Blowfish entre AS3Crypto y javax.crypto falla con el error de relleno
-
22-08-2019 - |
Pregunta
Tengo una clave secreta que me fue enviado como un archivo para que pueda cifrar algunos datos XML utilizando Blowfish. ¿Cómo accedo a la llave para que pueda usarlo con AS3Crypto? Asumo que necesito para incrustarlo utilizando el [Insertar] etiqueta meta. Es mimeType = "octava-application /" pero no estoy seguro de si esa es la derecha. ¿Cómo puedo incrustar, después hacer referencia a este archivo como la clave secreta? Los XMLs que estoy de cifrado no se pueden descifrar en el lado de Java. Cada intento falla con esta excepción:
javax.crypto.BadPaddingException: dado el bloque final no rellena correctamente.
Como beneficio adicional, si alguien tiene experiencia en el uso de la lib a trabajar con la aplicación Java y conoce el modo / de relleno / IV ideal para usar que sería impresionante. Gracias!
//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;
Solución
No sé si todavía no está seguro acerca de cómo integrar los datos binarios, pero tienes razón sobre el uso de la etiqueta [Embed]
(que es sin duda una buena manera de hacerlo).
A menudo incrustar como esto:
[Embed(source="myKeyFile.key", mimeType="application/octet-stream")]
private const _KeyFile:Class;
private var keyFile:ByteArray = new _KeyFile();
...
trace(keyFile.length + " bytes"); // XYZ bytes
Más información: http://dispatchevent.org/roger/embed-almost-anything -in-su-swf /