아리아 모듈 bytes array를 string -> byte로 변환해서 다시 복호화할려고 하면 안됩니다.
- 작성자 :
- 조*
- 작성일 :
- 2011-09-18 21:27:30
- 조회수 :
- 2,174
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
차세대 e사람이 제공기관
타 부처들은 이용기관
이런 상황에서 password key를 공유하고 aria 암호화모듈로 자료를 암호화하여
송수신할려고 합니다. Get 방식으로 Http 를 통해 인자를 주고 받을려고 하는 상황이구요.
그래서 우선 string으로 변환을 하여 보낼려고 하는데 (get 파라메터로)
그런데.. 이게 string으로 아래와 같이 해서 보내면 실제 getBytes()를 해서 얻었을 경우
복화화가 안되서 보니, 실제 new String(byte array)를 해서 다시 getBytes()를 하고 나면
실제 값이 다른거 같아 그런 듯 합니다.
적용을 빨리 해야 해서.. 빠른 답변 부탁드리겠습니다 ㅠ
String param = "암호화할 값";
EgovCipherService cipher = new EgovCipherService();
cipher.setPassword("RCE11091718145293702"); // password 셋팅
byte[] encryptedBytes = cipher.encrypt(param);
byte[] decryptdBytes1 = cipher.decrypt( ( new String( encryptedBytes ) ).getBytes("ASCII") );
byte[] decryptdBytes2 = cipher.decrypt( encryptedBytes );
System.out.println( " new String( encryptedBytes ) " + new String( encryptedBytes ) );
System.out.println( " encryptedBytes " + encryptedBytes );
String decryptedStr1 = new String( decryptdBytes1, "UTF-8");
String decryptedStr2 = new String( decryptdBytes2, "ASCII");
System.out.println( " decryptedStr1 ==> " + decryptedStr1 );
System.out.println( " decryptedStr2 ==> " + decryptedStr2 );
타 부처들은 이용기관
이런 상황에서 password key를 공유하고 aria 암호화모듈로 자료를 암호화하여
송수신할려고 합니다. Get 방식으로 Http 를 통해 인자를 주고 받을려고 하는 상황이구요.
그래서 우선 string으로 변환을 하여 보낼려고 하는데 (get 파라메터로)
그런데.. 이게 string으로 아래와 같이 해서 보내면 실제 getBytes()를 해서 얻었을 경우
복화화가 안되서 보니, 실제 new String(byte array)를 해서 다시 getBytes()를 하고 나면
실제 값이 다른거 같아 그런 듯 합니다.
적용을 빨리 해야 해서.. 빠른 답변 부탁드리겠습니다 ㅠ
String param = "암호화할 값";
EgovCipherService cipher = new EgovCipherService();
cipher.setPassword("RCE11091718145293702"); // password 셋팅
byte[] encryptedBytes = cipher.encrypt(param);
byte[] decryptdBytes1 = cipher.decrypt( ( new String( encryptedBytes ) ).getBytes("ASCII") );
byte[] decryptdBytes2 = cipher.decrypt( encryptedBytes );
System.out.println( " new String( encryptedBytes ) " + new String( encryptedBytes ) );
System.out.println( " encryptedBytes " + encryptedBytes );
String decryptedStr1 = new String( decryptdBytes1, "UTF-8");
String decryptedStr2 = new String( decryptdBytes2, "ASCII");
System.out.println( " decryptedStr1 ==> " + decryptedStr1 );
System.out.println( " decryptedStr2 ==> " + decryptedStr2 );
A
안녕하세요.. 조억님..
암호화된 bytes를 바로 new String으로 처리하는 경우 한글 encoding문제가 있기 때문에.. 정확하게 처리되지 않을 수 있습니다.
이 경우 BASE64 방식으로 변환하여 적용하셔야 합니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
암호화된 bytes를 바로 new String으로 처리하는 경우 한글 encoding문제가 있기 때문에.. 정확하게 처리되지 않을 수 있습니다.
이 경우 BASE64 방식으로 변환하여 적용하셔야 합니다.
그럼.. 즐거운 하루되십시오.
감사합니다.