ARIACryptoService 문제
- 작성자 :
- 이*문
- 작성일 :
- 2016-01-05 13:48:55
- 조회수 :
- 1,928
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
@RequestMapping("/enc.do")
@ResponseBody
public String enc(HttpServletRequest request, HttpServletResponse response) throws Exception {
String strKey = "1";
String strValue = "TEXT";
byte[] base64enc = Base64.encodeBase64(strValue.getBytes("UTF-8"));
byte[] text = cryptoService.encrypt(base64enc, "1" );
return URLEncoder.encode(new String(text,"UTF-8"));
}
@RequestMapping("/dec.do")
@ResponseBody
public String dec(HttpServletRequest request, HttpServletResponse response) throws Exception {
String value = URLDecoder.decode(request.getParameter("enc"));
byte[] text = cryptoService.decrypt(value.getBytes("UTF-8"), "1");
byte[] base64dec = Base64.decodeBase64(text);
return new String(base64dec, "UTF-8");
}
@ResponseBody
public String enc(HttpServletRequest request, HttpServletResponse response) throws Exception {
String strKey = "1";
String strValue = "TEXT";
byte[] base64enc = Base64.encodeBase64(strValue.getBytes("UTF-8"));
byte[] text = cryptoService.encrypt(base64enc, "1" );
return URLEncoder.encode(new String(text,"UTF-8"));
}
@RequestMapping("/dec.do")
@ResponseBody
public String dec(HttpServletRequest request, HttpServletResponse response) throws Exception {
String value = URLDecoder.decode(request.getParameter("enc"));
byte[] text = cryptoService.decrypt(value.getBytes("UTF-8"), "1");
byte[] base64dec = Base64.decodeBase64(text);
return new String(base64dec, "UTF-8");
}
A
이성문님, 안녕하세요.
코딩 순서를 지금의 base64 인코딩 -> aria 인코딩 -> URLEncoding에서
aria 인코딩 -> base64 인코딩 -> URLEncoding으로 변경해서 작업해 보시기 바랍니다.
String strValue = "TEXT"; // 암호화할 값
byte[] text = cryptoService.encrypt(strValue.getBytes("UTF-8"), password); // ARIA 알고리즘 변환
String base64enc = Base64.encodeBase64String(text); // Base64 인코딩
String urlText = URLEncoder.encode(base64enc); // URLEncoding
//Decryption
System.out.println("\n\nDecoding Test!!!");
String value = URLDecoder.decode(urlText); //URLDecoding
byte[] base64dec = Base64.decodeBase64(value); //Base64 Decoding
byte[] dectext = cryptoService.decrypt(base64dec, password); // ARIA Decoding
base64 클래스는 여러가지가 있으나, apache commons codec에 있는 Base64 클래스를 사용해 보시기 바랍니다.
혹은, 실행환경의 idgnr 패키지의 base64클래스를 사용해도 무방합니다.
pom.xml에 아래 코드를 추가하시고, base64클래스 임포트 경로를 org.apache.commons.codec.binary.Base64로 변경해서 작업하시기 바랍니다.
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
감사합니다.
코딩 순서를 지금의 base64 인코딩 -> aria 인코딩 -> URLEncoding에서
aria 인코딩 -> base64 인코딩 -> URLEncoding으로 변경해서 작업해 보시기 바랍니다.
String strValue = "TEXT"; // 암호화할 값
byte[] text = cryptoService.encrypt(strValue.getBytes("UTF-8"), password); // ARIA 알고리즘 변환
String base64enc = Base64.encodeBase64String(text); // Base64 인코딩
String urlText = URLEncoder.encode(base64enc); // URLEncoding
//Decryption
System.out.println("\n\nDecoding Test!!!");
String value = URLDecoder.decode(urlText); //URLDecoding
byte[] base64dec = Base64.decodeBase64(value); //Base64 Decoding
byte[] dectext = cryptoService.decrypt(base64dec, password); // ARIA Decoding
base64 클래스는 여러가지가 있으나, apache commons codec에 있는 Base64 클래스를 사용해 보시기 바랍니다.
혹은, 실행환경의 idgnr 패키지의 base64클래스를 사용해도 무방합니다.
pom.xml에 아래 코드를 추가하시고, base64클래스 임포트 경로를 org.apache.commons.codec.binary.Base64로 변경해서 작업하시기 바랍니다.
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
감사합니다.