형들 제발 도와줘! Action Script 3.0으로 구현된 복호화 코드를 openssl이란 프로그램을 통해 구현하려 하는데, 이상하게도 복호화가 안돼.
다음 hurlant.crypto 라이브러리로 제작된 아래 코드를 openssl 명령어로 바꾸어 표현하고 싶어.
개발 문서 : http://crypto.hurlant.com/docs/
소스 코드 : http://code.google.com/p/as3crypto/
public function decrypt(arg1:String=""):String {
key = com.hurlant.util.Hex.toArray(com.hurlant.util.Hex.fromString("Y(*TIU)"));
var loc1:*=com.hurlant.util.Base64.decodeToByteArray(arg1);
var loc2:*=new com.hurlant.crypto.symmetric.PKCS5();
var loc3:*=com.hurlant.crypto.Crypto.getCipher(type, key, loc2);
loc2.setBlockSize(loc3.getBlockSize());
loc3.decrypt(loc1);
return com.hurlant.util.Hex.toString(com.hurlant.util.Hex.fromArray(loc1));
}
internal var type:String="simple-des-ecb";
internal var key:flash.utils.ByteArray;
arg1은 base64로 encoding된 상태입니다. key는 임의의 공개키야!
위 코드에서 padding은 PKCS5로, 복호화 알고리즘은 DES, 모드는 ECB로 복호화를 수행하는것은 알겠는데, 다음과 같이 openssl 명령어를 사용하여 복호화를 시도하면 복호화에 실패해버려...
openssl des-ecb -a -nosalt -k '(위의 key변수; ex) Y(*TIU)' -d -in encryp_file -out decrypt_file
IV를 표현하는 코드를 추적(노가다)해서 다음과 같이 수정했어.
TEMP=$(base64 -d target)
tail -n+10 <<<"$TEMP" | openssl des-ecb -iv "$(head -c8 <<<"$TEMP" | xxd -ps)" -salt -k '(암호 : Y(*TIU))' -d
형들, 도와줘...
모야이건