- 결제금액 등 보안이 약해도 되는 항목에 적용 - 개인정보에선 사용하지 x (복구화가 가능하기 때문에)
window.btoa(값); : 사용자가 입력한 값을 base64 암호화
window.atob(값); : base64 암호화한 값을 원래 단어로 복원
한글 : window.btoa(encodeURIComponent(값));
⚡ javascript 암호화 (base64)
<body>
<form action="./securityok.do" method="get" id="frm">
<input type="hidden" name="pwd" value="">
비밀번호 : <input type="text" name="password">
<input type="button" value="클릭" onclick="abc()">
</form>
<form id="frm2">
고객명 : <input type="text" name="user">
<input type="button" value="클릭" onclick="base64()">
</form>
</body>
<script type="text/javascript">
//영문,숫자
function abc(){
var pw = frm.password.value;
var encode = window.btoa(pw); //사용자가 입력한 값을 base64 암호화
var decode = window.atob(encode); //base64 암호화한 값을 원래 단어로 복원
frm.pwd.value = encode; //암호화된 문자값을 백엔드로 전달
}
//한글
function base64(){
var word= frm2.user.value;
var encode = window.btoa(encodeURIComponent(word));
}
</script>
⚡java 암호화 (base64)
- 모든 암호화는 byte로 변환이 되어서 사용해야함 base64 encode 사용법 : 문자를 byte로 변환 후 해당 byte를 라이브러리를 통하여 암호화 base64 decode 사용법 : 문자를 byte로 변환 후 라이브를 통하여 복호화
- 기본 문법
//base64 encode 사용법 : 문자를 byte로 변환 후 해당 byte를 라이브러리를 통하여 암호화
String word = "a12345";
byte a[] = word.getBytes();
Encoder ec = Base64.getEncoder();
byte b[] = ec.encode(a);
System.out.println(new String(b)); //YTEyMzQ1 출력
//base64 decode 사용법 : 문자를 byte로 변환 후 라이브를 통하여 복호화
String word2 = "YTEyMzQ1";
Decoder dc = Base64.getDecoder();
byte c[] = dc.decode(word2);
System.out.println(new String(c)); //a12345 출력
해당 라이브러리 사용
- 위 html과 연계( Front에서 base64로 암호화된 값을 복구화하여 데이터값을 확인하는 방식 )
public class securityok extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pwd = request.getParameter("pwd").intern();
//front에서 암호화 되어서 넘어온 값은 byte로 변환할 필요x
Decoder code = Base64.getDecoder();
byte code2[] = code.decode(pwd);
System.out.println(new String(code2)); //사용자가 입력한 값 그대로 출력됨
}
}