::: Zany's Homepage ::: Zany Wiki | »çÀÌÆ® ÅëÇÕ °Ë»ö
 
 
 

[Cipher] RSA, Java and OpenSSL À» »ç¿ëÇÑ ºñ´ëĪ(Public-key) ¾Ïȣȭ - #2/3

°Ô½ÃÆÇ
JAVA
ÀÛ¼ºÀÚ
helix
ÀÛ¼ºÀÏ
2016-09-29 17:04:44
ÀÐÀº¼ö
3437
ÆòÁ¡
   
Ç¥½Ã¿É¼Ç
HTML»ç¿ë | ÀÚµ¿BRűנ| °ø¹é¹®ÀÚÇã¿ë | °¡¿îµ¥Á¤·Ä | °íÁ¤Æø±Û²Ã | ÀÚµ¿URL¸µÅ© | ¸¶¿ì½º¼±ÅÃ
°ü·Ã¸µÅ©01
http://www.reindel.com/asymmetric-public-key-encryption-using-rsa-java-openssl/ 
¡Ü ÀÚ¹Ù¿¡¼­ Private / Public Key ÆÄÀÏ »ý¼ºÇϱâ
ÀÚ¹Ù¿¡¼­´Â key pair ¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Â ¾Ïȣȭ API(rich cryptography API)¸¦ Á¦°øÇÑ´Ù.
¾Æ·¡ ¼Ò½º´Â API ¸¦ ÅëÇØ key pair ¸¦ »ý¼ºÇÏ°í ÆÄÀϽýºÅÛ¿¡ ÀúÀåÇÒ ¼ö ÀÖ´Â immutable Ŭ·¡½º ¼Ò½ºÀÌ´Ù.
¡Ü RSAKeyPair Class
openssl ¸í·É°ú ¸Å¿ì À¯»çÇÏ´Ù.
»ý¼ºÀÚ¿¡¼­ Å° ±æÀÌ(bit)¸¦ ÀÎÀÚ·Î ¹Þ¾Æ RSA private / public key ¸¦ ¸¸µé¾î³½ ÈÄ,
ÁöÁ¤ÇÑ ÆÄÀÏ°æ·Î¿Í ÆÄÀϸíÀ¸·Î ÆÄÀϽýºÅÛ¿¡ ÀúÀåÇÑ´Ù.
¾Æ·¡´Â »ç¿ë¹ýÀÌ´Ù (JUnit Test)
¡Ü RSAKeyPairTest Class


¡Ü Public / Private Å°¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅÍ ¾Ïȣȭ / º¹È£È­ Çϱâ
ÀÌÁ¦ ÆÄÀÏ·Î »ý¼ºµÈ Public / Private Å°¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅÍ ¾Ïº¹È£È­ ÇÒ ¼ö ÀÖ´Ù.
RSACipher Ŭ·¡½º¿¡¼­ ¾Ïº¹È£È­¸¦ ¼öÇàÇÑ´Ù.
¡Ü RSACipher Class
transformation Àº cipher ¸¦ À¯ÀÏÇÏ°Ô ¸¸µé¾îÁÖ´Â ¹®ÀÚ¿­ÀÌ´Ù.
´ëĪ/ºñ´ëĪ ¾Ë°í¸®µë »Ó¸¸ ¾Æ´Ï¶ó mode ¿Í padding µµ ÁöÁ¤ÇÏ¿© Cipher ¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù.
¡Ü JDK javax.crypto.Cipher SDK References ¿¡¼­ ¹ßÃé

transformation Àº ¾Æ·¡¿Í °°Àº ÇüÅÂÀÌ´Ù.

    "algorithm/mode/padding" or
    "algorithm"

ÈÄÀÚÀÇ °æ¿ì, mode ¿Í padding Àº provider ±âº»°ªÀÌ »ç¿ëµÈ´Ù.
¾Æ·¡¿Í °°ÀÌ Cipher ¸¦ ¼±¾ðÇÒ ¼ö ÀÖ´Ù.

    Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
JDK ¿¡´Â algorithm, mode, padding ÀÌ Á¤ÀÇµÈ ¸î°¡Áö transformation À» Á¦°øÇÑ´Ù.
¡Ü JDK javax.crypto.Cipher SDK References ¿¡¼­ ¹ßÃé

Ç¥ÁØ Cipher transformations, °ýÈ£ ¾ÈÀº Å° »çÀÌÁî

   AES/CBC/NoPadding (128)
   AES/CBC/PKCS5Padding (128)
   AES/ECB/NoPadding (128)
   AES/ECB/PKCS5Padding (128)
   DES/CBC/NoPadding (56)
   DES/CBC/PKCS5Padding (56)
   DES/ECB/NoPadding (56)
   DES/ECB/PKCS5Padding (56)
   DESede/CBC/NoPadding (168)
   DESede/CBC/PKCS5Padding (168)
   DESede/ECB/NoPadding (168)
   DESede/ECB/PKCS5Padding (168)
   RSA/ECB/PKCS1Padding (1024, 2048)
   RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
   RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)
cipher ¿¡¼­ mode ¿Í padding ¿¡ ´ëÇØ À̾߱â ÇÒ °ÍÀº ¸¹Áö¸¸,
Ưº°È÷ µÎ°¡Áö °üÁ¡¸¸ »ìÆ캸°Ú´Ù.
ù°·Î RSA ¾Ë°í¸®µë¿¡ ECB mode °¡ ÁöÁ¤µÇ¾î ÀÖÁö¸¸, ÀÚ¹Ù¿¡¼­´Â ¹«½ÃµÉ °ÍÀÌ´Ù.
¿Ö³ÄÇϸé, ´Ù¸¥ ºí·°¸ðµå°¡ µ¿ÀÛÇÏ´Â ¹æ½Ä°ú ¸¶Âù°¡Áö·Î ECB(Electronic codebook)µµ ´ëĪ ¾Ïȣȭ¿¡¼­¸¸ »ç¿ëµÈ´Ù.
ÀϹÝÀûÀ¸·Î RSA ¿Í public-key ¾Ïȣȭ´Â ºñ´ëĪÀÌ°í, ºí·° ´ÜÀ§·Î ¾ÏȣȭÇÏÁö ¾Ê´Â´Ù.
ÀÌ·± ÀÌÀ¯·Î Bouncy Castle °ú °°Àº ´Ù¸¥ ¾Ïȣȭ ÇÁ·Î¹ÙÀÌ´õµéÀº RSA ¾Ë°í¸®µëÀ» »ç¿ëÇÏ´Â °æ¿ì mode ·Î "NONE" À» »ç¿ëÇÑ´Ù.
µÑ°·Î padding À» ¾Ë¾Æº¸ÀÚ.
padding ¾øÀÌ RSA ¸¦ »ç¿ëÇÏ´Â °ÍÀº °ø°Ý¿¡ Ãë¾àÇϹǷΠÀý´ë »ç¿ëÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.
java ¾Ïȣȭ API ¿¡¼­´Â ÀÌ·± ¼³Á¤ÀÌ °¡´ÉÇÏÁö ¾ÊÀ¸´Ï ½Å°æ¾²Áö ¸»ÀÚ.
¡Ü RSACipherTest Class


¡Ü Public / Private Å°¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅÍ ¾Ïȣȭ / º¹È£È­ Çϱâ (In-memory)
¾à°£¸¸ ¼öÁ¤ÇÏ¸é ¸Þ¸ð¸® ³»¿¡ ÀÖ´Â Public / Private Å°¸¦ »ç¿ëÇÏ¿© ¾Ïº¹È£È­ ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.
publicKeyPath, privateKeyPath ¹®ÀÚ¿­ ´ë½Å »ç¿ëÇÒ PublicKey, PrivateKey ¸¦ ÀÎÀÚ·Î ¹Þ´Â
2°³ÀÇ ¿À¹ö·Îµå(overloaded)µÈ ¸Þ¼­µå°¡ RSACipher ¿¡ Ãß°¡µÇ¾ú´Ù.
¡Ü RSACipher Class
¾Æ·¡´Â »ç¿ë¹ýÀÌ´Ù. (JUnit Test)
RSACipherTest Ŭ·¡½º¿¡ testEncryptDecryptWithKeyPair() ¸Þ¼­µå°¡ Ãß°¡µÇ¾ú´Ù.
¡Ü RSACipherTest Class



 °Ô½ÃÆÇ ±Û ¸ñ·Ï
No Subject Poster Hits Posted
13845 helix 1827 2016-11-07 10:56:49
13779 helix 16019 2016-10-11 10:42:48
13764 helix 2359 2016-10-07 15:42:35
13744 helix 2557 2016-09-30 13:50:40
13740 helix 2411 2016-09-29 18:57:13
helix 3437 2016-09-29 17:04:44
13738 helix 4693 2016-09-29 16:32:23
13734 helix 1900 2016-09-28 09:50:03
13733 helix 2113 2016-09-27 17:24:48
13730 helix 1008 2016-09-27 11:13:00
13729 helix 8021 2016-09-27 10:12:57
ÄÚ¸àÆ®
ÀÛ¼ºÀÚ
                       
 
zany.kr
  Copyright ¨Ï 2002-2010 Zany's Programming Lab. All Rights Not Reserved.
temporary This Page loads on 0.016 Secs