형들 제발 도와줘! 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


형들, 도와줘...