반응형

 rsa_js.zipRSA.java

홈페이지 SSL을 사용할 수 없는경우에 개인정보를 암호화 처리를 하여 전송을 하여야하는데 그방법중 하나가 RSA 암호화 입니다. 

첫번째 RSA.java 파일 생성(첨부파일:RSA.java)

RSA.java  파일은 RSA암호화를 위해 공개키와 개인키를 생성하여 암호화 복호화를 실행하는 부분입니다.

 

두번째 로그인 페이지(jsp)로 넘어가는 자바에서 RSA.java에서 키값을 받아온다.

RSA rsa = RSA.getEncKey();
request.setAttribute("publicKeyModulus", rsa.getPublicKeyModulus());
request.setAttribute("publicKeyExponent", rsa.getPublicKeyExponent());
request.getSession().setAttribute("__rsaPrivateKey__", rsa.getPrivateKey());

 

세번째 로그인을 실행하는 jsp파일에서 자바스크립트 파일을 추가하고,                           (첨부파일:RSA_js.zip)

<script type="text/javascript" src="../js/util/jsbn.js"></script>
<script type="text/javascript" src="../js/util/rsa.js"></script>
<script type="text/javascript" src="../js/util/prng4.js"></script>
<script type="text/javascript" src="../js/util/rng.js"></script>

아이디와 비밀번호를 전송하기전에 암호화 처리를 해준다.(자바스크립트로 처리)

var rsaPublicKeyModulus = document.getElementById("rsaPublicKeyModulus").value;
var rsaPublicKeyExponent = document.getElementById("rsaPublicKeyExponent").value;
var encPassword = fnRsaEnc(document.getElementById("userPw").value, rsaPublicKeyModulus, rsaPublicKeyExponent);
document.frm.encPw.value = encPassword;

 

function fnRsaEnc(value, rsaPublicKeyModulus, rsaPpublicKeyExponent) {

    var rsa = new RSAKey();

    rsa.setPublic(rsaPublicKeyModulus, rsaPpublicKeyExponent);


     var encValue = rsa.encrypt(value);     // 사용자ID와 비밀번호를 RSA로 암호화한다.

     return encValue;

}


(

*암호화 처리를 위해 jsp페이지 안에서 rsaPublicKeyModulus, rsaPublicKeyExponent, encPassword 를 input type="hidden" 처리를 해줘야한다.

ex)<input type="hidden" id="rsaPublicKeyModulus" value="${publicKeyModulus}">

<input type="hidden" id="rsaPublicKeyExponent" value="${publicKeyExponent}">

<input type="hidden" name="encPw" value="">

)

 

마지막으로 로그인을 처리하는 java파일에서 암호화된 비밀번호를 복호화한 후 로그인 처리를 하면 된다.

String encPw = DataUtil.notnull(param.get("encPw"));//암호화된 비밀번호를 받는다.
String decPw = RSA.decryptRsa((PrivateKey) request.getSession().getAttribute("__rsaPrivateKey__"), encPw);//암호화된 비밀번호를 복호화한다.

param.put("userPw", decPw);

 

 

반응형

'JSP' 카테고리의 다른 글

JSP 썸네일 이미지 만들기 (thumbnail)  (0) 2017.02.27

+ Recent posts