Apps.repia.com > R-Utils > Crypto - select box - Base64 선택
Appsportal > CryptoServiceImpl.java
import org.apache.commons.codec.binary.Base64
문제 : html 파일에 대해, A와 E는 동일한 결과값을 표시하지만, C가 다른 결과를 표시
Crypto-Base64 암호화 결과
입력값 : <head> encryptInptFld : <head> // F (입력값이 Crypto 내부에서 변환 & 표시되는 값) encryptRsltFls : Jmx0O2hlYWQmZ3Q7 // G (F에 Base64가 적용되어 표시되는 결과값)
사이트 암호화 결과
입력값 : <head> 암호화 결과값 : PGhlYWQ+
else if("base64".equals(cryptoVO.getCryptoMethod())) { // Base64 (binary-to-text encoding schemes)를 선택하고 if(cryptoVO.getEncryptInptFld()!==null) { // encryption(암호화)를 실행하면 byte[] encryptInputByte = cryptoVO.getEncryptInptFld().getBytes("UTF-8"); // encryption 입력값을 charset=UTF-8로 인코딩된 byte 형태로 encryptInputByte에 할당하고 resultData.setEncryptRsltFld(Base64.encodeBase64String(encryptInputByte)); // UTF-8로 인코딩된 encryptInputByte를 Base64 문자열로 반환하여 전달 } else if(cryptoVO.getDecryptInptFld()!==null) { String decodeStr = new String(Base64.decodeBase64(cryptoVO.getDecryptInptFld()), "UTF-8"); // 입력된 Base64 문자열을 UTF-8로 디코딩한 값을 String 타입의 decodeStr에 할당 resultData.setDecryptRsltFld(decodeStr); } }
else if("base64".equals(cryptoVO.getCryptoMethod())) { if(cryptoVO.getEncryptInptFld()!==null) { byte[] encryptInputByte = StringEscapeUtils.unescapeHtml(cryptoVO.getEncryptInptFld()).getBytes("UTF-8"); // 1차 수정코드 - "<"가 "<"로 변경되지 않도록 StringEscapeUtils.unescapeHtml로 처리 후 변환되도록 조치 resultData.setEncryptRsltFld(Base64.encodeBase64String(encryptInputByte)); } else if(cryptoVO.getDecryptInptFld()!==null) { String decodeStr = new String(Base64.decodeBase64(cryptoVO.getDecryptInptFld()), "UTF-8"); resultData.setDecryptRsltFld(decodeStr); } }
모든 암호화 방식 선택에 대해 미리 cryptoVo.getEncryptInptFld()의 입력값에 대해 인코딩시
미리 전처리 실시하도록 하기와 같이 코드를 추가하고, 2.3.1 기존 코드를 유지
... /* 인코딩시 전처리 실행 '<' -> '<' -> '<' */ if(StringUtils.isNotEmpty(cryptoVO.getEncryptInptFld())){ // 추가된 코드 String unEscapeInputField = StringEscapeUtils.unescapeHtml(cryptoVO.getEncryptInptFld()); cryptoVO.setEncryptInptFld(unEscapeInputField); log.info("[{}]/[{}]/[{}]", cryptoVO.getEncryptInptFld(), StringEscapeUtils.escapeHtml(cryptoVO.getEncryptInptFld()), StringEscapeUtils.unescapeHtml(cryptoVO.getEncryptInptFld())); } ... ... ... else if("base64".equals(cryptoVO.getCryptoMethod())) { if(cryptoVO.getEncryptInptFld()!==null) { byte[] encryptInputByte = cryptoVO.getEncryptInptFld().getBytes("UTF-8"); resultData.setEncryptRsltFld(Base64.encodeBase64String(encryptInputByte)); } else if(cryptoVO.getDecryptInptFld()!==null) { String decodeStr = new String(Base64.decodeBase64(cryptoVO.getDecryptInptFld()), "UTF-8"); resultData.setDecryptRsltFld(decodeStr); } }