암호화/decrypt ecb/pks5/blowfish 사이의 as3crypto & javax. crypto는 패딩 오류로 실패합니다.
-
22-08-2019 - |
문제
파일로 나에게 전송 된 비밀 키가있어 Blowfish를 사용하여 XML 데이터를 암호화 할 수 있습니다. 키에 액세스하여 as3crypto와 함께 사용할 수 있도록하려면 어떻게해야합니까? [Embed] 메타 태그를 사용하여 포함해야한다고 가정합니다. MimeType = "Application/Octet-stream"이지만 그것이 옳은지 확실하지 않습니다. 어떻게 포함 시키고이 파일을 비밀 키로 참조합니까? 내가 암호화하는 XMLS는 Java 쪽에서 해독 할 수 없습니다. 이 예외로는 각 시도가 실패합니다.
javax.crypto.badpaddingException : 최종 블록이 제대로 패딩되지 않았습니다.
보너스로, 누구든지 LIB를 사용하여 Java 구현과 협력하고 사용하기위한 이상적인 모드/패딩/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;
해결책
Dunno는 이진 데이터를 포함시키는 방법에 대해 확신이 없지만 [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-al-anything-in-your-swf/
제휴하지 않습니다 StackOverflow