ÀÚ¹Ù½ºÅ©¸³Æ® RSA ¾ÏÈ£È ¶óÀ̺귯¸® JSEncrypt
JSEncrypt´Â ºê¶ó¿ìÀú¿¡¼ ¼¹ö·Î º¸³¾ µ¥ÀÌÅ͸¦ ¾ÏÈ£È Çϱâ À§Çؼ »ç¿ëÇÒ ¼ö ÀÖ´Â ÀÚ¹Ù½ºÅ©¸³Æ® ¶óÀ̺귯¸®·Î RSA ¹æ½ÄÀ¸·Î µ¥ÀÌÅ͸¦ ¾ÏÈ£È/º¹È£È ÇÒ ¼ö ÀÖ½À´Ï´Ù.
RSA´Â ºñ´ëĪÇü ¾ÏÈ£È ¾Ë°í¸®ÁòÀ¸·Î ºê¶ó¿ìÀú¿¡¼ °ø°³Å°·Î ¾ÏÈ£È Çؼ µ¥ÀÌÅ͸¦ ¼¹ö·Î º¸³»¸é ¼¹ö¿¡¼´Â °³ÀÎÅ°·Î º¹È£È ÇÒ ¼ö ÀÖ½À´Ï´Ù.
JSEncrypt´Â http://travistidwell.com/jsencrypt/ ¿¡¼ ´Ù¿î·Îµå ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ »çÀÌÆ®¿¡ ¼³¸íµÇ¾î ÀÖµíÀÌ JSEncrypt´Â http://www-cs-students.stanford.edu/~tjw/jsbn/ ¿¡ ÀÖ´Â ´Ù¾çÇÑ ¾ÏÈ£È °ü·Ã ¶óÀ̺귯¸®µéÀÇ ·¡ÆÛ·Î ÇϳªÀÇ ÆÄÀÏ¿¡ ÇÊ¿äÇÑ ¶óÀ̺귯¸®¸¦ ¸ðµÎ Æ÷ÇÔÇÏ°í ÀÖ°í, °£ÆíÇÑ API¸¦ Á¦°øÇÕ´Ï´Ù.
´Ù¿î·Îµå ¹ÞÀº ÆÄÀÏÀº jsencrypt-master.zip ÀÔ´Ï´Ù. ¾ÐÃàÀ» Ç®¸é bin Æú´õ ¾Æ·¡¿¡ jsencrypt.min.js ÆÄÀÏ Çϳª¸¸ ÀÖÀ¸¸é µË´Ï´Ù.
Å×½ºÆ®¸¦ À§Çؼ´Â °³ÀÎÅ°¿Í °ø°³Å° ½ÖÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. opensslÀ» »ç¿ëÇؼ Å°¸¦ ¸¸µì´Ï´Ù. opensslÀÇ ¼³Ä¡¹× »ç¿ë¹ýÀº "Windows¿¡¼ TOMCAT¿¡ °³¹ß¿ëÀ¸·Î SSL Àû¿ëÇϱâ"¸¦ ÂüÁ¶Çϼ¼¿ä.
- °³ÀÎÅ°¸¦ ¸¸µì´Ï´Ù. Å×½ºÆ®¿ëÀ¸·Î ¸¸µé°ÍÀ̹ǷΠ¾Ïȣȴ ÇÏÁö ¾ÊÀº 1024bit Å°¸¦ ¸¸µì´Ï´Ù.
D:\cert>openssl genrsa -out private.key 1024
- °ø°³Å°¸¦ ¸¸µì´Ï´Ù.
D:\cert>openssl rsa -in private.key -out public_key.pem -pubout
ÀÌÁ¦ Å×½ºÆ®¿ë ÆäÀÌÁö¸¦ ¸¸µì´Ï´Ù. °³ÀÎÅ°¿Í °ø°³Å°´Â <textarea>¿¡ ³Ö¾î µÎ¾ú½À´Ï´Ù. Æò¹®°ú ¾ÏÈ£ÈµÈ ¹®Àå, º¹È£ÈµÈ ¹®ÀåÀ» ³ÖÀ» ÀÔ·Â Çʵå¿Í ¾ÏÈ£È/º¹È£È¸¦ ½ÇÇàÇÒ ¹öÆ°À» ¸¸µì´Ï´Ù.
<div style="display:flex;">
<div>
<label for="privateKey">Private key</label><br />
<textarea id="privateKey" cols="66" rows="16">-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDLZL7JkIAxVOLqtEZr+SjJZYqS59ARp3/Z/l5Q6AOWryyrCJI4
A/4RjFiZ2lN2a08WGgZuYrM+rk7mXmxQdAX1aUTXk9xxZX2YrO9g2TMxpJzrdDD6
AKbDSqz9TLx2mBuLFKr+dJXX4FSg6GQF9ZAlP/PxuriRMQ5kbnqGPiMCvwIDAQAB
AoGAMlaw0XouAAeeUbBkbXyxF4dGEK3G1Ve7UNyfwy5pFPYt+/aXGb4DN5ygoRNj
7L8KR9IRHWjYK/9AD8v2ysKsZmuXNt23ojkKHq5wirSCpO2vb244ApMQAlvZYdoA
eUaYjMyq9RLBsPXh8yLAMrLGU6Yxsv5evRjrHnStW8LcImECQQDwnypVThxZP5d5
vxDHV4xFvS0PFucR05TIEtpLvGIGQ8bzol9jz+A4irpIRHnyRfydyJQziS7Svp9E
sSlWiOaVAkEA2GR8XZPTXTwtotF4dSSqu0sdERUCyShTAK4/vRjGviH0qITGPk+Z
eCQp2ZV0WsY84/6mMRviiBn92+J7hS5TAwJAASRQOB1pxwalOl+svbVtpfsS1qp+
KDh/0T89p/RZ5ru1mvxfRYL8BmiqH6OrjHnGjB0ijugMv9VFvja1AoMdzQJBALjo
1SUZpunq/Iw/NxHS7Vnyi7oHHERMgvD39VtfCqV6WpiOLOEeH+R78o8NmUngUDP7
bIRWcbMfksAMvsRFm4UCQQC3suGb43vEPOv8dGaIX7DxRCuvbgI+3mRn07bZe//i
axiQXphcMJArJB4bpxl+Sdq59miHPhHpTIYGN9fVHYr+
-----END RSA PRIVATE KEY-----</textarea><br />
<label for="publicKey">Public key</label><br />
<textarea id="publicKey" cols="66" rows="7">-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLZL7JkIAxVOLqtEZr+SjJZYqS
59ARp3/Z/l5Q6AOWryyrCJI4A/4RjFiZ2lN2a08WGgZuYrM+rk7mXmxQdAX1aUTX
k9xxZX2YrO9g2TMxpJzrdDD6AKbDSqz9TLx2mBuLFKr+dJXX4FSg6GQF9ZAlP/Px
uriRMQ5kbnqGPiMCvwIDAQAB
-----END PUBLIC KEY-----</textarea>
</div>
<div style="padding-left: 10px;">
<label for="plainText">Æò¹®</label><br />
<input type="text" id="plainText" style="width:400px;" /><br />
<label for="encryptedText">¾ÏÈ£ÈµÈ ¹®Àå</label><br />
<input type="text" id="encryptedText" style="width:400px;" /><br />
<label for="decryptedText">º¹È£ÈµÈ ¹®Àå</label><br />
<input type="text" id="decryptedText" style="width:400px;" /><br />
<button id="encrypt">¾ÏÈ£È</button><button id="decrypt">º¹È£È</button>
</div>
</div>
ÀÚ¹Ù½ºÅ©¸³Æ® ºÎºÐ ÀÔ´Ï´Ù. jquery´Â JSEncrypt¶óÀ̺귯¸®¿¡ ÇÊ¿äÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. Æû ¿ä¼Ò¸¦ ½±°Ô ´Ù·ç±â À§Çؼ »ç¿ëµÇ¾ú½À´Ï´Ù. ¾Ïȣȿ¡´Â °ø°³Å°¸¦ »ç¿ëÇÏ°í º¹È£È ¿¡´Â °³ÀÎÅ°¸¦ »ç¿ëÇß½À´Ï´Ù.
<script type="text/javascript" src="./js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="./js/jsencrypt.min.js"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
// ¾ÏÈ£È Çϱâ
$('#encrypt').click(function () {
// °´Ã¼ »ý¼º
var crypt = new JSEncrypt();
// Å° ¼³Á¤
crypt.setPrivateKey($('#publicKey').val());
var plainText = $("#plainText").val();
// ¾ÏÈ£È
var encryptedText = crypt.encrypt(plainText);
$('#encryptedText').val(encryptedText);
});
// º¹È£È Çϱâ
$('#decrypt').click(function () {
var crypt = new JSEncrypt();
crypt.setPrivateKey($('#privateKey').val());
var encryptedText = $('#encryptedText').val();
// º¹È£È
var decryptedText = crypt.decrypt(encryptedText);
$('#decryptedText').val(decryptedText);
});
});
//]]>
</script>
½ÇÇà°á°ú ÀÔ´Ï´Ù.
ÀÚ¹Ù½ºÅ©¸³Æ® RSA ¾ÏÈ£È ¶óÀ̺귯¸® JSEncrypt »ç¿ë¹ýÀ» ¾Ë¾Æ º¸¾Ò½À´Ï´Ù.
Ãâó: https://offbyone.tistory.com/343 [½¬°í ½ÍÀº °³¹ßÀÚ]