암호화/decrypt ecb/pks5/blowfish 사이의 as3crypto & javax. crypto는 패딩 오류로 실패합니다.

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

문제

파일로 나에게 전송 된 비밀 키가있어 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/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top