2009-05-15 2 views
0

Ich habe einen geheimen Schlüssel, der mir als Datei gesendet wurde, damit ich einige XML-Daten mit Blowfish verschlüsseln kann. Wie kann ich auf den Schlüssel zugreifen, damit ich ihn mit AS3Crypto verwenden kann? Ich nehme an, dass ich es mit dem Meta-Tag [Embed] einbetten muss. Es ist mimeType = "application/octet-stream", aber ich bin mir nicht sicher, ob das stimmt. Wie integriere ich, dann referenziere diese Datei als den geheimen Schlüssel? Die xmls, die ich verschlüssle, können auf der Java-Seite nicht entschlüsselt werden. Jeder Versuch schlägt mit dieser Ausnahme fehl:Verschlüsseln/Entschlüsseln von ECB/PKS5/Blowfish zwischen AS3Crypto & Javax.Crypto schlägt fehl mit Padding-Fehler

javax.crypto.BadPaddingException: Gegeben letzter Block nicht richtig aufgefüllt.

Als Bonus, wenn jemand Erfahrung mit der Verwendung der lib, um mit der Java-Implementierung arbeiten und weiß, die ideale Modus/Padding/IV zu verwenden, wäre toll. Vielen Dank!

//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; 

Antwort

1

Weiß nicht, wenn Sie noch nicht sicher sind, wie binäre Daten einzubetten, aber du hast Recht über die Verwendung des [Embed]-Tag (es ist sicherlich ein guter Weg, es zu tun).

ich einbetten oft wie folgt aus:

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

... 

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

Weitere Informationen: http://dispatchevent.org/roger/embed-almost-anything-in-your-swf/

+0

Das war genau das Problem. Vielen Dank! – ChickensDontClap

+0

Keine Probs, yo ... – aaaidan