Provider ¥¯¥é¥¹
Security ¥¯¥é¥¹
MessageDigest ¥¯¥é¥¹
Signature ¥¯¥é¥¹
AlgorithmParameterSpec ¥¤¥ó¥¿¥Õ¥§¡¼¥¹
DSAParameterSpec ¥¯¥é¥¹
AlgorithmParameters ¥¯¥é¥¹
AlgorithmParameterGenerator ¥¯¥é¥¹
Key ¥¤¥ó¥¿¥Õ¥§¡¼¥¹
¸°»ÅÍͤΥ¤¥ó¥¿¥Õ¥§¡¼¥¹¤ª¤è¤Ó¥¯¥é¥¹
KeySpec ¥¤¥ó¥¿¥Õ¥§¡¼¥¹
DSAPrivateKeySpec ¥¯¥é¥¹
DSAPublicKeySpec ¥¯¥é¥¹
RSAPrivateKeySpec ¥¯¥é¥¹
RSAPrivateCrtKeySpec ¥¯¥é¥¹
RSAMultiPrimePrivateCrtKeySpec ¥¯¥é¥¹
RSAPublicKeySpec ¥¯¥é¥¹
EncodedKeySpec ¥¯¥é¥¹
PKCS8EncodedKeySpec ¥¯¥é¥¹
X509EncodedKeySpec ¥¯¥é¥¹
KeyFactory ¥¯¥é¥¹
CertificateFactory ¥¯¥é¥¹
KeyPair ¥¯¥é¥¹
KeyPairGenerator ¥¯¥é¥¹
KeyStore ¥¯¥é¥¹
SecureRandom ¥¯¥é¥¹
Cipher ¥¯¥é¥¹
CipherStream ¥¯¥é¥¹
CipherInputStream ¥¯¥é¥¹
CipherOutputStream ¥¯¥é¥¹
KeyGenerator ¥¯¥é¥¹
SecretKeyFactory ¥¯¥é¥¹
SealedObject ¥¯¥é¥¹
KeyAgreement ¥¯¥é¥¹
Mac ¥¯¥é¥¹MessageDigest ¥ª¥Ö¥¸¥§¥¯¥È¤Î·×»»
¸°»ÅÍͤª¤è¤Ó KeyFactory ¤ò»È¤Ã¤¿½ð̾¤ÎÀ¸À®¤È¸¡¾Ú
Security API ¤Ï Java ¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î¥³¥¢ API ¤Ç¡¢
java.security¥Ñ¥Ã¥±¡¼¥¸ (¤ª¤è¤Ó¤½¤Î¥µ¥Ö¥Ñ¥Ã¥±¡¼¥¸) ¤ËÁȤ߹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î API ¤Ï¡¢³«È¯¼Ô¤¬Äã¥ì¥Ù¥ë¤È¹â¥ì¥Ù¥ë¤ÎξÊý¤Î¥»¥¥å¥ê¥Æ¥£µ¡Ç½¤ò¥×¥í¥°¥é¥à¤ËÁȤ߹þ¤á¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£JDK 1.1 ¤Ç Security API ¤¬½é¤á¤Æ¥ê¥ê¡¼¥¹¤µ¤ì¤¿ºÝ¡¢¡ÖJava °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã¡×(JCA) ¤¬Æ³Æþ¤µ¤ì¤Þ¤·¤¿¡£JCA ¤È¤Ï¡¢Java ¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë°Å¹æµ¡Ç½¤ò³«È¯¤·¡¢¤³¤ì¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Î¤³¤È¤Ç¤¹¡£JDK 1.1 ¤Ç¤Ï¡¢JCA ¤Ë¥Ç¥¸¥¿¥ë½ð̾¤È¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¤Î API ¤¬´Þ¤á¤é¤ì¤Þ¤·¤¿¡£
³¤¤¤Æ¥ê¥ê¡¼¥¹¤µ¤ì¤¿ Java 2 SDK ¤Ç¤Ï¡¢¤³¤Î¥É¥¥å¥á¥ó¥È¤ÇÀâÌÀ¤¹¤ë¤è¤¦¤Ë¡¢Java °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã¤¬Ãø¤·¤¯³ÈÄ¥¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢X.509 v3 ¾ÚÌÀ½ñ¤ò¥µ¥Ý¡¼¥È¤¹¤ë¾ÚÌÀ½ñ´ÉÍý¥¤¥ó¥Õ¥é¥¹¥È¥é¥¯¥Á¥ã¤¬¥¢¥Ã¥×¥°¥ì¡¼¥É¤µ¤ì¡¢½ÀÆðÀ¤È³ÈÄ¥À¤¬¤¢¤ê¡¢Å¬¹çÀ¤¬¹â¤¯ºÙ¤«¤¤¥¢¥¯¥»¥¹À©¸æ¤¬²Äǽ¤Ê¿·¤·¤¤ Java ¥»¥¥å¥ê¥Æ¥£¥¢¡¼¥¥Æ¥¯¥Á¥ã¤¬Æ³Æþ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
Java °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ï¡¢Java 2 SDK Security API ¤Î°Å¹æ²½¤Ë´ØÏ¢¤¹¤ëÉôʬ¤òÁȤ߹þ¤ó¤Ç¤¤¤Þ¤¹¡£¤Þ¤¿¡¢¤³¤Î¥É¥¥å¥á¥ó¥È¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë°ìÏ¢¤Îµ¬Â§¤È»ÅÍͤâ¼è¤êÆþ¤ì¤Þ¤·¤¿¡£Ê£¿ô¤Î°Å¹æ¤Î¼ÂÁõ¤È¤½¤ÎÁê¸ß±¿ÍѤò²Äǽ¤Ë¤¹¤ë¡Ö¥×¥í¥Ð¥¤¥À¡×¥¢¡¼¥¥Æ¥¯¥Á¥ã¤â´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
JavaTM °Å¹æ²½³ÈÄ¥µ¡Ç½ (JCE) ¤Ï¡¢°Å¹æ²½¡¢¸°À¸À®¤È¸°¶¨Äê¡¢¤ª¤è¤Ó¥á¥Ã¥»¡¼¥¸Ç§¾Ú¥³¡¼¥É (MAC) ¥¢¥ë¥´¥ê¥º¥àÍѤΥե졼¥à¥ï¡¼¥¯¤ª¤è¤Ó¼ÂÁõ¤òÄ󶡤·¤Þ¤¹¡£°Å¹æ²½¥µ¥Ý¡¼¥È¤Ë¤Ï¡¢ÂоΡ¢ÈóÂоΡ¢¥Ö¥í¥Ã¥¯¡¢¤ª¤è¤Ó¥¹¥È¥ê¡¼¥à°Å¹æ¤¬´Þ¤Þ¤ì¤Þ¤¹¡£¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Ï¡¢¥»¥¥å¥ê¥Æ¥£Êݸ¤ì¤¿¥¹¥È¥ê¡¼¥à¤ª¤è¤Ó¥·¡¼¥ë¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤â¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£
JavaTM 2 SDK, Standard Edition (Java 2 SDK) ¥Ð¡¼¥¸¥ç¥ó 1.2.x ¤ª¤è¤Ó 1.3.x ¤Ç¤Ï¡¢JCE ¤Ï¥ª¥×¥·¥ç¥ó¥Ñ¥Ã¥±¡¼¥¸ (³ÈÄ¥µ¡Ç½) ¤Ç¤·¤¿¡£Java 2 SDK 1.4 ¥ê¥ê¡¼¥¹°Ê¹ß¤Ç¤Ï JCE ¤¬Åý¹ç¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
JCE API ¤Ë¤Ï¡¢°Ê²¼¤¬´Þ¤Þ¤ì¤Þ¤¹¡£
- ÂоΥХ륯°Å¹æ²½ (DES¡¢RC2¡¢¤ª¤è¤Ó IDEA ¤Ê¤É)
- ÂоΥ¹¥È¥ê¡¼¥à°Å¹æ²½ (RC4 ¤Ê¤É)
- ÈóÂоΰŹ沽 (RSA ¤Ê¤É)
- ¥Ñ¥¹¥ï¡¼¥É¥Ù¡¼¥¹°Å¹æ²½ (PBE)
- ¸°¶¨Äê
- ¥á¥Ã¥»¡¼¥¸Ç§¾Ú¥³¡¼¥É (MAC)
Java 2 SDK, v 5.0 ¥ê¥ê¡¼¥¹¤Ë¤Ï¡¢
SunJCE¤È¤¤¤¦Ì¾Á°¤Îɸ½à JCE ¥×¥í¥Ð¥¤¥À¤¬¤¢¤é¤«¤¸¤á¥¤¥ó¥¹¥È¡¼¥ë¤ª¤è¤ÓÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£SunJCE ¤Ï¡¢¼¡¤Î°Å¹æ²½¥µ¡¼¥Ó¥¹¤òÄ󶡤·¤Þ¤¹¡£
- Electronic Code Book (ECB)¡¢Cipher Block Chaining (CBC)¡¢Cipher Feedback (CFB)¡¢Output Feedback (OFB)¡¢¤ª¤è¤Ó Propagating Cipher Block Chaining (PCBC) ¥â¡¼¥É¤Î DES (FIPS PUB 46-1)¡¢¥È¥ê¥×¥ë DES¡¢¤ª¤è¤Ó Blowfish °Å¹æ²½¥¢¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ (Ãí: ¤³¤Î¥É¥¥å¥á¥ó¥È¤Ç¤Ï¡¢¡Ö¥È¥ê¥×¥ë DES¡×¤È¡ÖDES-EDE¡×¤òƱ¤¸¤â¤Î¤È¤¹¤ë)
- DES¡¢¥È¥ê¥×¥ë DES¡¢Blowfish¡¢HMAC-MD5¡¢¤ª¤è¤Ó HMAC-SHA1 ¥¢¥ë¥´¥ê¥º¥à¤ËŬ¤·¤¿¸°¤òÀ¸À®¤¹¤ë¸°¥¸¥§¥Í¥ì¡¼¥¿
- PKCS #5 ¤ÇÄêµÁ¤µ¤ì¤¿ DES-CBC ¥Ñ¥¹¥ï¡¼¥É¥Ù¡¼¥¹°Å¹æ²½ (PBE) ¥¢¥ë¥´¥ê¥º¥à¤ò»ÈÍѤ¹¤ë MD5 ¤Î¼ÂÁõ
- ÉÔÆ©ÌÀ¤Ê DES¡¢¥È¥ê¥×¥ë DES¡¢PBE ¸°¥ª¥Ö¥¸¥§¥¯¥È¤È¡¢Çظå¤Î¸°¥Ç¡¼¥¿¤ÎÆ©ÌÀ¤Êɽ¸½¤È¤ÎÁÐÊý¸þÊÑ´¹¤òÄ󶡤¹¤ë¡ÖÈëÌ©¸°¥Õ¥¡¥¯¥È¥ê¡×
- Ê£¿ô¤Î¥Ñ¡¼¥Æ¥£´Ö¤Ç¤Î Diffie-Hellman ¸°¶¨Äꥢ¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ
- Diffie-Hellman ¥¢¥ë¥´¥ê¥º¥à¤ËŬ¤·¤¿¸ø³«Ãͤª¤è¤ÓÈó¸ø³«ÃͤΥڥ¢¤ÎÀ¸À®¤ËɬÍ×¤Ê Diffie-Hellman ¸°¥Ú¥¢¥¸¥§¥Í¥ì¡¼¥¿
- Diffie-Hellman ¥¢¥ë¥´¥ê¥º¥à¤Î¥Ñ¥é¥á¡¼¥¿¥¸¥§¥Í¥ì¡¼¥¿
- ÉÔÆ©ÌÀ¤Ê Diffie-Hellman ¸°¥ª¥Ö¥¸¥§¥¯¥È¤ÈÇØ¸å¤Î¸°¥Ç¡¼¥¿¤ÎÆ©ÌÀ¤Êɽ¸½¤È¤Î´Ö¤ÎÁÐÊý¸þÊÑ´¹¤òÄ󶡤¹¤ë Diffie-Hellman¡Ö¸°¥Õ¥¡¥¯¥È¥ê¡×
- Diffie-Hellman¡¢DES¡¢¥È¥ê¥×¥ë DES¡¢Blowfish¡¢¤ª¤è¤Ó PBE ¥Ñ¥é¥á¡¼¥¿ÍѤΥ¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¥Þ¥Í¡¼¥¸¥ã
- RFC 2104 ¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡¢HMAC-MD5 ¤ª¤è¤Ó HMAC-SHA1 ¥¡¼¥Ï¥Ã¥·¥å¥¢¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ
- PKCS #5 ¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¥Ñ¥Ç¥£¥ó¥°Êý¼°¤Î¼ÂÁõ
- JCEKS ¤È¤¤¤¦ÆÈ¼«¤Î¥¡¼¥¹¥È¥¢·¿¤Î¤¿¤á¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ
ÍѸì¤Ë´Ø¤¹¤ëÃíµ
Java 2 SDK, v 5.0 ¤Î JCE ¤Ë¤Ï¡¢¼¡¤Î 2 ¤Ä¤Î¥½¥Õ¥È¥¦¥§¥¢¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬´Þ¤Þ¤ì¤Þ¤¹¡£
¤³¤Î¥É¥¥å¥á¥ó¥È¤Ç¤Ï¡¢¡ÖJCE¡×¤È¤¤¤¦¸ì¤Ï¡¢Java 2 SDK, v 5.0 ¤Î JCE ¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤ò»Ø¤·¤Æ»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£Java 2 SDK, v 5.0 ¤È¤È¤â¤ËÄ󶡤µ¤ì¤ë JCE ¥×¥í¥Ð¥¤¥À¤Ë¸ÀµÚ¤¹¤ë¾ì¹ç¡¢¾ï¤Ë¡ÖSunJCE¡×¥×¥í¥Ð¥¤¥À¤Î¤³¤È¤òÌÀ¼¨Åª¤Ë»Ø¤·¤Æ¤¤¤Þ¤¹¡£
- ¥×¥í¥Ð¥¤¥À¤¬¼ÂÁõ¤òÄó¶¡²Äǽ¤Ê°Å¹æ²½¥µ¡¼¥Ó¥¹¤òÄêµÁ¤ª¤è¤ÓÄ󶡤¹¤ë¥Õ¥ì¡¼¥à¥ï¡¼¥¯¡£¤³¤Î¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ë¤Ï¡¢
javax.crypto¥Ñ¥Ã¥±¡¼¥¸Æâ¤Î¤¹¤Ù¤Æ¤¬´Þ¤Þ¤ì¤ë- ¡ÖSunJCE¡×¤È¤¤¤¦Ì¾Á°¤Î¥×¥í¥Ð¥¤¥À
Ãí: ¤³¤Î JCA »ÅÍͤκǿ·ÈǤˤĤ¤¤Æ¤Ï¡¢¼¡¤Î¥µ¥¤¥È¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html
Java °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã (JCA) ¤Ï¡¢°Ê²¼¤ÎÊý¿Ë¤Ë´ð¤Å¤¤¤ÆÀ߷פµ¤ì¤Þ¤·¤¿¡£
- ¼ÂÁõ¤ÎÆÈΩÀ¤ÈÁê¸ßÁàºîÀ
- ¥¢¥ë¥´¥ê¥º¥à¤ÎÆÈΩÀ¤È³ÈÄ¥À
¼ÂÁõ¤ÎÆÈΩÀ¤È¥¢¥ë¥´¥ê¥º¥à¤ÎÆÈΩÀ¤ÏÁêÊä´Ø·¸¤Ë¤¢¤ê¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢¥Ç¥¸¥¿¥ë½ð̾¤ä¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¤Ê¤É¤Î°Å¹æ²½¥µ¡¼¥Ó¥¹¤ò¡¢¼ÂÁõ¤Î¾ÜºÙ¤ä¤³¤ì¤é¤Î³µÇ°¤Î´ð¤Ë¤Ê¤ë¥¢¥ë¥´¥ê¥º¥à¤ò°Õ¼±¤·¤Ê¤¤¤Ç»ÈÍѤǤ¤Þ¤¹¡£´°Á´¤Ê¥¢¥ë¥´¥ê¥º¥à¤ÎÆÈΩÀ¤¬ÉÔ²Äǽ¤Ê¤È¤¤Ï¡¢JCA ¤Ïɸ½à²½¤µ¤ì¤¿¡¢¥¢¥ë¥´¥ê¥º¥à°Í¸¤Î API ¤òÄ󶡤·¤Þ¤¹¡£¼ÂÁõ¤ÎÆÈΩÀ¤¬Ë¾¤Þ¤·¤¯¤Ê¤¤¾ì¹ç¡¢JCA ¤Ç¤Ï¡¢³«È¯¼Ô¤¬ÆÃÄê¤Î¼ÂÁõ¤ò»ØÄê¤Ç¤¤Þ¤¹¡£
¥¢¥ë¥´¥ê¥º¥à¤ÎÆÈΩÀ¤Ï¡¢°Å¹æ²½¡Ö¥¨¥ó¥¸¥ó¡×(¥µ¡¼¥Ó¥¹) ¤Î·¿¤òÄêµÁ¤·¡¢¤³¤ì¤é¤Î°Å¹æ²½¥¨¥ó¥¸¥ó¤Îµ¡Ç½¤òÄ󶡤¹¤ë¥¯¥é¥¹¤òÄêµÁ¤¹¤ë¤³¤È¤Ë¤è¤ê¼Â¸½¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤é¤Î¥¯¥é¥¹¤Ï¡Ö¥¨¥ó¥¸¥ó¥¯¥é¥¹¡×¤È¸Æ¤Ð¤ì¡¢
MessageDigest¥¯¥é¥¹¡¢Signature¥¯¥é¥¹¡¢KeyFactory¥¯¥é¥¹¡¢¤ª¤è¤ÓKeyPairGenerator¥¯¥é¥¹¤¬¤³¤ì¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£¼ÂÁõ¤ÎÆÈΩÀ¤Ï¡¢¡Ö¥×¥í¥Ð¥¤¥À¡×¥Ù¡¼¥¹¤Î¥¢¡¼¥¥Æ¥¯¥Á¥ã¤ò»È¤Ã¤Æ¼Â¸½¤µ¤ì¤Þ¤¹¡£°Å¹æ²½¥µ¡¼¥Ó¥¹¥×¥í¥Ð¥¤¥À (¤³¤Î¥É¥¥å¥á¥ó¥È¤Ç¤Ï¡Ö¥×¥í¥Ð¥¤¥À¡×¤È¤â¸Æ¤Ð¤ì¤ë) ¤È¤Ï¡¢¥Ç¥¸¥¿¥ë½ð̾¥¢¥ë¥´¥ê¥º¥à¡¢¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¡¢¤ª¤è¤Ó¸°¤ÎÊÑ´¹¥µ¡¼¥Ó¥¹¤Ê¤É¤Î 1 ¤Ä°Ê¾å¤Î°Å¹æ²½¤ò¼Â¹Ô¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤ä¥Ñ¥Ã¥±¡¼¥¸¥»¥Ã¥È¤ò°ÕÌ£¤·¤Þ¤¹¡£¥×¥í¥°¥é¥à¤Ïñ¤Ë¡¢ÆÃÄê¤Î¥µ¡¼¥Ó¥¹ (¤¿¤È¤¨¤Ð DSA ½ð̾¥¢¥ë¥´¥ê¥º¥à) ¤ò¼Â¹Ô¤¹¤ëÆÃÄê·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È (¤¿¤È¤¨¤Ð
Signature¥ª¥Ö¥¸¥§¥¯¥È) ¤òÍ׵᤹¤ë¤À¤±¤Ç¡¢¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¥×¥í¥Ð¥¤¥À¤Î 1 ¤Ä¤«¤é¼ÂÁõ¤ò³ÍÆÀ¤Ç¤¤Þ¤¹¡£É¬Íפ˱þ¤¸¤Æ¡¢¥×¥í¥°¥é¥à¤ÏÆÃÄê¥×¥í¥Ð¥¤¥À¤«¤é¼ÂÁõ¤òÍ׵᤹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤è¤ê¹â®¤Ç°ÂÁ´À¤Î¹â¤¤¥Ð¡¼¥¸¥ç¥ó¤¬ÍøÍѤǤ¤ë¤È¤¤Ï¡¢¥×¥í¥Ð¥¤¥À¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËÂФ·¤ÆÆ©²áŪ¤Ë¹¹¿·¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¼ÂÁõ¤ÎÁê¸ßÁàºîÀ¤È¤Ï¡¢¤µ¤Þ¤¶¤Þ¤Ê¼ÂÁõ¤¬¸ß¤¤¤Ëµ¡Ç½¤Ç¤¡¢¸ß¤¤¤Î¸°¤ò»È¤Ã¤¿¤ê¡¢¸ß¤¤¤Î½ð̾¤ò¸¡¾Ú¤Ç¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢1 ¤Ä¤Î¥×¥í¥Ð¥¤¥À¤¬À¸À®¤·¤¿Æ±¤¸¥¢¥ë¥´¥ê¥º¥à¤ä¸°¤òÊ̤Υץí¥Ð¥¤¥À¤¬»È¤Ã¤¿¤ê¡¢¤¢¤ë¥×¥í¥Ð¥¤¥À¤¬À¸À®¤·¤¿½ð̾¤òÊ̤Υץí¥Ð¥¤¥À¤¬¸¡¾Ú¤¹¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£
¥¢¥ë¥´¥ê¥º¥à¤Î³ÈÄ¥À¤È¤Ï¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤ë¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Î 1 ¤Ä¤ËÅö¤Æ¤Ï¤Þ¤ë¿·µ¬¥¢¥ë¥´¥ê¥º¥à¤òÍÆ°×¤ËÄɲäǤ¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£
°Å¹æ²½¥µ¡¼¥Ó¥¹¥×¥í¥Ð¥¤¥À
Java °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¡¢¡Ö°Å¹æ²½¥µ¡¼¥Ó¥¹¥×¥í¥Ð¥¤¥À¡×(¤³¤Î¥É¥¥å¥á¥ó¥È¤Ç¤Ï¡Ö¥×¥í¥Ð¥¤¥À¡×¤È¤â¸Æ¤Ð¤ì¤ë) ¤Î³µÇ°¤¬Æ³Æþ¤µ¤ì¤Þ¤·¤¿¡£¤³¤ì¤Ï¡¢Security API ¤Î°Å¹æ²½¤Ë´Ø¤¹¤ë¥µ¥Ö¥»¥Ã¥È¤Î¸ÇÄê¼ÂÁõ¤òÄ󶡤¹¤ë¥Ñ¥Ã¥±¡¼¥¸ (¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¥»¥Ã¥È) ¤Ç¤¹¡£
¤¿¤È¤¨¤Ð¡¢JDK 1.1 ¤Ç¤Ï¡¢¥×¥í¥Ð¥¤¥À¤Ë¤Ï¡¢1 ¤Ä°Ê¾å¤Î¥Ç¥¸¥¿¥ë½ð̾¥¢¥ë¥´¥ê¥º¥à¡¢¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¥¢¥ë¥´¥ê¥º¥à¡¢¤ª¤è¤Ó¸°À¸À®¥¢¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ¤Ê¤É¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡£Java 2 SDK ¤Ç¤Ï¸°¥Õ¥¡¥¯¥È¥ê¡¢¥¡¼¥¹¥È¥¢¤ÎºîÀ®¤ª¤è¤Ó´ÉÍý¡¢¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Î´ÉÍý¡¢¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤ÎÀ¸À®¡¢¤ª¤è¤Ó¾ÚÌÀ½ñ¥Õ¥¡¥¯¥È¥ê¤Î 5 ¼ïÎà¤Î¥µ¡¼¥Ó¥¹¤¬Äɲäµ¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢Java 2 SDK ¤Ç¤Ï¡¢¥×¥í¥Ð¥¤¥À¤¬Íð¿ô¤ÎÀ¸À® (RNG) ¥¢¥ë¥´¥ê¥º¥à¤òÄ󶡤Ǥ¤Þ¤¹¡£¤³¤ì¤Þ¤Ç¡¢JDK ¤Ç¤Ï¡¢ÆÃÄê¤Î¥¢¥ë¥´¥ê¥º¥à¤Ï¥Ï¡¼¥É¥³¡¼¥É¤µ¤ì¤Æ¤ª¤ê¡¢RNG ¤â¥×¥í¥Ð¥¤¥À¥Ù¡¼¥¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£
¤¹¤Ç¤ËÀâÌÀ¤·¤¿¤è¤¦¤Ë¡¢¥×¥í¥°¥é¥à¤Ïñ¤Ë¡¢ÆÃÄꥵ¡¼¥Ó¥¹ (¤¿¤È¤¨¤Ð DSA ½ð̾¥¢¥ë¥´¥ê¥º¥à) ÍÑ¤ÎÆÃÄê·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È (¤¿¤È¤¨¤Ð
Signature¥ª¥Ö¥¸¥§¥¯¥È) ¤òÍ׵᤹¤ë¤À¤±¤Ç¡¢¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¥×¥í¥Ð¥¤¥À¤Î 1 ¤Ä¤«¤é¼ÂÁõ¤ò³ÍÆÀ¤Ç¤¤Þ¤¹¡£¤¢¤ë¤¤¤Ï¡¢ÆÃÄê¥×¥í¥Ð¥¤¥À¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÍ׵᤹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹(³Æ¥×¥í¥Ð¥¤¥À¤Ï¡¢¤½¤ì¤¾¤ì¤Î»²¾È̾¤ò»ý¤Ä)¡£Sun ¤¬Ä󶡤¹¤ë Java Runtime Environment ¤Ë¤Ï¡¢
SUN¤È¤¤¤¦Ì¾Á°¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥×¥í¥Ð¥¤¥À¤¬É¸½à¤ÇÅëºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤Û¤«¤Î Java Runtime Environment ¤Ë¤Ï¡¢SUN¥×¥í¥Ð¥¤¥À¤¬´Þ¤Þ¤ì¤Ê¤¤¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£SUN¥×¥í¥Ð¥¤¥À¥Ñ¥Ã¥±¡¼¥¸¤Ë¤Ï¡¢°Ê²¼¤Î¤â¤Î¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
- NIST FIPS 186 ¤Ëµ½Ò¤µ¤ì¤¿¥Ç¥¸¥¿¥ë½ð̾¥¢¥ë¥´¥ê¥º¥à (DSA) ¤Î¼ÂÁõ
- MD5 (RFC 1321) ¤ª¤è¤Ó SHA-1 (NIST FIPS 180-1) ¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¥¢¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ
- DSA ¥¢¥ë¥´¥ê¥º¥à¤ËŬ¤·¤¿¸ø³«¸°¤ª¤è¤ÓÈó¸ø³«¸°¤Î¥Ú¥¢¤ÎÀ¸À®¤ËɬÍ×¤Ê DSA ¸°¤Î¥Ú¥¢¤Î¥¸¥§¥Í¥ì¡¼¥¿
- DSA ¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¥¸¥§¥Í¥ì¡¼¥¿
- DSA ¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¥Þ¥Í¡¼¥¸¥ã
- (ÉÔÆ©ÌÀ¤Ê) DSA Èó¸ø³«¸°¤ª¤è¤Ó¸ø³«¸°¥ª¥Ö¥¸¥§¥¯¥È¤È¤½¤ì¤é¤Î´ðËܤȤʤ븰¥Ç¡¼¥¿¤È¤ÎÁÐÊý¸þÊÑ´¹¤ò²Äǽ¤Ë¤¹¤ë DSA ¡Ö¸°¥Õ¥¡¥¯¥È¥ê¡×
- IEEE P1363 ɸ½à (Appendix G.7) ¤Î¿ä¾©¤Ë½àµò¤·¤¿ÀìÍѤΡÖSHA1PRNG¡×µ¼»÷Íð¿ôÀ¸À®¥¢¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ
- ¡ÖInternet X.509 Public Key Infrastructure Certificate and CRL Profile¡×(¤³¤Î¥É¥¥å¥á¥ó¥È¤Î¼¹É®»þÅÀ¤Ç¡¢Internet Engineering Task Force ¤«¤éÁð¹Æ¤È¤·¤ÆÆþ¼ê²Äǽ) ¤Ëµ¬Äꤵ¤ì¤Æ¤¤¤ë PKIX ÍѤξÚÌÀ½ñ¥Ñ¥¹¥Ó¥ë¥À¤ª¤è¤Ó¥Ð¥ê¥Ç¡¼¥¿
- PKIX LDAP V2 ¥¹¥¡¼¥Þ (RFC 2587) ¤ò»ÈÍѤ·¤Æ¾ÚÌÀ½ñ¤È CRL ¤ò Collection ¥Ç¥£¥ì¥¯¥È¥ê¤ª¤è¤Ó LDAP ¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¼èÆÀ¤¹¤ë¤¿¤á¤Î¾ÚÌÀ½ñ¥¹¥È¥¢¤Î¼ÂÁõ
- X.509 ¾ÚÌÀ½ñ¤Î¼è¤ê¾Ã¤·¥ê¥¹¥È (CRL) ¤Î¤¿¤á¤Î¾ÚÌÀ½ñ¥Õ¥¡¥¯¥È¥ê
JKS¤È¤¤¤¦ÆÈ¼«¤Î¥¡¼¥¹¥È¥¢·¿¤Î¤¿¤á¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõSDK ¤Ç¤Ï 1 ¤Ä°Ê¾å¤Î¥×¥í¥Ð¥¤¥À¥Ñ¥Ã¥±¡¼¥¸¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£¿·µ¬¥×¥í¥Ð¥¤¥À¤ÏÀÅŪ¤Þ¤¿¤ÏưŪ¤ËÄɲäǤ¤Þ¤¹ (Provider ¥¯¥é¥¹¤È Security ¥¯¥é¥¹¤ò»²¾È)¡£Java °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¤Ï¡¢¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¥×¥í¥Ð¥¤¥À¤ª¤è¤Ó¤½¤ì¤é¤¬¥µ¥Ý¡¼¥È¤¹¤ë¥µ¡¼¥Ó¥¹¤Ë¤Ä¤¤¤Æ¡¢¥æ¡¼¥¶¤¬Ì䤤¹ç¤ï¤»¤ë¤³¤È¤¬¤Ç¤¤ë API ¥»¥Ã¥È¤¬¤¢¤ê¤Þ¤¹¡£
¥¯¥é¥¤¥¢¥ó¥È¤Ï°Û¤Ê¤ë¥×¥í¥Ð¥¤¥À¤òÍѤ¤¤Æ¼Â¹Ô´Ä¶¤ò¹½À®¤·¡¢³Æ¥×¥í¥Ð¥¤¥À¤Î¡ÖÍ¥Àè½ç°Ì¡×¤ò»ØÄê¤Ç¤¤Þ¤¹¡£Í¥Àè½ç°Ì¤È¤Ï¡¢ÆÃÄê¥×¥í¥Ð¥¤¥À¤Î»ØÄ꤬¤Ê¤¤¾ì¹ç¤Ë¡¢Í׵ᤵ¤ì¤¿¥µ¡¼¥Ó¥¹¤Ë´Ø¤·¤Æ¸¡º÷¤µ¤ì¤ë¥×¥í¥Ð¥¤¥À¤Î½ç°Ì¤Ç¤¹¡£
¸°´ÉÍý
¡Ö¥¡¼¥¹¥È¥¢¡×¤È¸Æ¤Ð¤ì¤ë¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ï¡¢¸°¤ª¤è¤Ó¾ÚÌÀ½ñ¤Î¥ê¥Ý¥¸¥È¥ê¤ò´ÉÍý¤¹¤ë¤¿¤á¤Ë»ÈÍѤǤ¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Ï¡¢¾ÚÌÀ½ñ¤Þ¤¿¤Ï½ð̾¤ÎÌÜŪ¤Ç¥¡¼¥¹¥È¥¢¤¬É¬Íפʥ¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÇÍøÍѤǤ¤Þ¤¹¡£
¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢
KeyStore¥¯¥é¥¹¤Î¼ÂÁõ¤ò·Ðͳ¤·¤Æ¥¡¼¥¹¥È¥¢¤Ë¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¥¯¥é¥¹¤Î¼ÂÁõ¤Ï¡¢java.security¥Ñ¥Ã¥±¡¼¥¸Æâ¤Ë¤¢¤ê¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤Ï¡¢Êƹñ Sun Microsystems, Inc ¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢JKS ¤È¤¤¤¦Ì¾Á°¤ÎÆÈ¼«¤Î¥¡¼¥¹¥È¥¢¥¿¥¤¥× (·Á¼°) ¤ò»ÈÍѤ¹¤ë¤â¤Î¤Ç¡¢¥¡¼¥¹¥È¥¢¤ò¥Õ¥¡¥¤¥ë¤È¤·¤Æ¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢
KeyStore¥¯¥é¥¹¤ÇÄ󶡤µ¤ì¤ëgetInstance¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¡¢°Û¤Ê¤ë¥×¥í¥Ð¥¤¥À¤«¤éÄ󶡤µ¤ì¤ë¿ô¼ïÎà¤Î¥¡¼¥¹¥È¥¢¼ÂÁõ¤«¤éÁªÂò¤Ç¤¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢¡Ö¸°´ÉÍý¡×¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¹à¤Ç¤Ï¡¢API ¤ËƳÆþ¤µ¤ì¤¿½ÅÍפʳµÇ°¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£
¥¨¥ó¥¸¥ó¥¯¥é¥¹¤È¥¢¥ë¥´¥ê¥º¥à
¡Ö¥¨¥ó¥¸¥ó¥¯¥é¥¹¡×¤Ï¡¢¶ñÂÎŪ¤Ê¼ÂÁõ¤Î¤Ê¤¤Ãê¾ÝŪ¤ÊÊýË¡¤Ç°Å¹æ²½¥µ¡¼¥Ó¥¹¤òÄêµÁ¤·¤Þ¤¹¡£
°Å¹æ²½¥µ¡¼¥Ó¥¹¤Ï¡¢¾ï¤ËÆÃÄê¤Î¥¢¥ë¥´¥ê¥º¥à¤Þ¤¿¤Ï·¿¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥µ¡¼¥Ó¥¹¤Ë¤è¤Ã¤Æ¡¢°Å¹æ²½¤ÎÁàºî (¥Ç¥¸¥¿¥ë½ð̾¤Þ¤¿¤Ï¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥ÈÍѤʤÉ) ¤ÎÄó¶¡¡¢°Å¹æ²½¤ÎÁàºî¤ËɬÍפʰŹ沽¥Ç¡¼¥¿ (¸°¤Þ¤¿¤Ï¥Ñ¥é¥á¡¼¥¿) ¤ÎÀ¸À®¤äÄó¶¡¡¢¤¢¤ë¤¤¤Ï°Å¹æ²½¤ÎÁàºî¤Ç»È¤¦°Å¹æ²½¸°¤ò°ÂÁ´¤Ë¥«¥×¥»¥ë²½¤¹¤ë¥Ç¡¼¥¿¥ª¥Ö¥¸¥§¥¯¥È (¥¡¼¥¹¥È¥¢¤Þ¤¿¤Ï¾ÚÌÀ½ñ) ¤ÎÀ¸À®¤¬¹Ô¤ï¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢
Signature¥¯¥é¥¹¤ª¤è¤ÓKeyFactory¥¯¥é¥¹¤Ï¡¢¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ç¤¹¡£Signature¥¯¥é¥¹¤Ï¡¢¥Ç¥¸¥¿¥ë½ð̾¥¢¥ë¥´¥ê¥º¥à¤Îµ¡Ç½¤Ø¤Î¥¢¥¯¥»¥¹¤òÄ󶡤·¤Þ¤¹¡£DSAKeyFactory¤Ï¡¢(¥³¡¼¥É²½·Á¼°¤Þ¤¿¤ÏÆ©ÌÀ¤Ê»ÅÍͤ«¤é) DSA Èó¸ø³«¸°¤Þ¤¿¤Ï¸ø³«¸°¤ò¡¢¤½¤ì¤¾¤ì DSASignature¥ª¥Ö¥¸¥§¥¯¥È¤ÎinitSign¤Þ¤¿¤ÏinitVerify¥á¥½¥Ã¥É¤«¤éÍøÍѲÄǽ¤Ê·Á¼°¤ÇÄ󶡤·¤Þ¤¹¡£Java °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ë¤Ï¡¢¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ê¤É¤Î¡¢°Å¹æ²½¤Ë´ØÏ¢¤¹¤ë Java 2 SDK Security ¥Ñ¥Ã¥±¡¼¥¸¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£API ¤Î¥æ¡¼¥¶¤Ï¡¢¥¨¥ó¥¸¥ó¥¯¥é¥¹¤òÍ׵ᤪ¤è¤Ó»ÈÍѤ·¤ÆÂбþ¤¹¤ë½èÍý¤ò¼Â¹Ô¤·¤Þ¤¹¡£Java 2 SDK ¤Ç¤Ï¡¢¼¡¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
Java 2 SDK ¤Î¥ê¥ê¡¼¥¹ 1.4 ¤Ç¤Ï¡¢¼¡¤Î¿·¤·¤¤¥¨¥ó¥¸¥ó¤¬Äɲ䵤ì¤Þ¤·¤¿¡£
MessageDigest: »ØÄê¥Ç¡¼¥¿¤Î¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È (¥Ï¥Ã¥·¥å) ¤Î·×»»¤Ë»ÈÍѤ¹¤ë
Signature: ¥Ç¡¼¥¿¤Î½ð̾¤ª¤è¤Ó¥Ç¥¸¥¿¥ë½ð̾¤Î¸¡¾Ú¤Ë»ÈÍѤ¹¤ë
KeyPairGenerator: »ØÄê¤Î¥¢¥ë¥´¥ê¥º¥à¤ËŬ¹ç¤·¤¿¡¢¸ø³«¸°¡¢Èó¸ø³«¸°¥Ú¥¢¤ÎÀ¸À®¤Ë»ÈÍѤ¹¤ë
KeyFactory:Key·¿¤ÎÉÔÆ©ÌÀ¤Ê°Å¹æ²½¸°¤ò¡Ö¸°»ÅÍÍ¡×(ÇØ¸å¥¡¼¥Ç¡¼¥¿¤ÎÆ©ÌÀ¤Êɽ¸½) ¤ËÊÑ´¹¤·¤¿¤ê¡¢¤½¤ÎµÕ¤ÎÊÑ´¹¤ò¹Ô¤¦¤¿¤á¤Ë»ÈÍѤ¹¤ë
CertificateFactory: ¸ø³«¸°¤Î¾ÚÌÀ½ñ¤ª¤è¤Ó¾ÚÌÀ½ñ¤Î¼è¤ê¾Ã¤·¥ê¥¹¥È (CRL) ¤ÎºîÀ®¤Ë»ÈÍѤ¹¤ë
KeyStore: ¡Ö¥¡¼¥¹¥È¥¢¡×¤ÎºîÀ®¤ª¤è¤Ó´ÉÍý¤Ë»ÈÍѤ¹¤ë¡£¥¡¼¥¹¥È¥¢¤Ï¡¢¸°¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç¤¢¤ë¡£¥¡¼¥¹¥È¥¢Æâ¤ÎÈó¸ø³«¸°¤Ë¤Ï¡¢¸°¤Ë´ØÏ¢¤·¤¿¾ÚÌÀÏ¢º¿¤¬¤¢¤ë¡£¾ÚÌÀÏ¢º¿¤Ï¡¢Âбþ¤¹¤ë¸ø³«¸°¤òǧ¾Ú¤¹¤ë¡£¤Þ¤¿¡¢¥¡¼¥¹¥È¥¢¤Ë¤Ï¡¢¿®Íê¤Ç¤¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤«¤é¤Î¾ÚÌÀ½ñ¤â³ÊǼ¤µ¤ì¤Æ¤¤¤ë
AlgorithmParameters: ¥Ñ¥é¥á¡¼¥¿¤ÎÉ乿²½¤ª¤è¤ÓÉü¹æ²½¤Ê¤É¡¢ÆÃÄê¤Î¥¢¥ë¥´¥ê¥º¥à¤Î¥Ñ¥é¥á¡¼¥¿´ÉÍý¤Ë»ÈÍѤ¹¤ë
AlgorithmParameterGenerator: ÆÃÄê¤Î¥¢¥ë¥´¥ê¥º¥à¤ËŬ¤·¤¿¥Ñ¥é¥á¡¼¥¿¥»¥Ã¥È¤ÎÀ¸À®¤Ë»ÈÍѤ¹¤ë
SecureRandom: Íð¿ô¤Þ¤¿¤Ïµ¼»÷Íð¿ô¤ÎÀ¸À®¤Ë»ÈÍѤ¹¤ë
CertPathBuilder: ¾ÚÌÀ½ñÏ¢º¿ (¡Ö¾ÚÌÀ½ñ¥Ñ¥¹¡×¤È¤â¸Æ¤Ð¤ì¤ë) ¤Î¹½Ãۤ˻ÈÍѤ¹¤ë
CertPathValidator: ¾ÚÌÀ½ñÏ¢º¿¤Î¸¡¾Ú¤Ë»ÈÍѤ¹¤ë
CertStore: ¥ê¥Ý¥¸¥È¥ê¤«¤é¾ÚÌÀ½ñ¤ÈCRL¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ï¡¢(ÆÃÄê¤Î°Å¹æ²½¥¢¥ë¥´¥ê¥º¥à¤Ë°Í¸¤·¤Ê¤¤) ÆÃÄê¤Î·¿¤Î°Å¹æ²½¥µ¡¼¥Ó¥¹µ¡Ç½¤Ø¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ󶡤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢Application Programming Interface (API) ¥á¥½¥Ã¥É¤¬ÄêµÁ¤µ¤ì¡¢API ¤¬Ä󶡤¹¤ëÆÃÄê¤Î¼ïÎà¤Î°Å¹æ²½¥µ¡¼¥Ó¥¹¤Ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬¥¢¥¯¥»¥¹¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¼ÂºÝ¤Î¼ÂÁõ (1 ¤Ä°Ê¾å¤Î¥×¥í¥Ð¥¤¥À¤«¤é) ¤ÏÆÃÄꥢ¥ë¥´¥ê¥º¥à¤Î¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£¤¿¤È¤¨¤Ð
Ãí: ¡Ö¥¸¥§¥Í¥ì¡¼¥¿ (generator)¡×¤Ï¡¢ºÇ¿·¤ÎÆâÍÆ¤Ç¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹¤¬¡¢¡Ö¥Õ¥¡¥¯¥È¥ê (factory)¡×¤Ï´û¸¤Î¹½À®Í×ÁÇ (É乿²½Ë¡¤Ê¤É) ¤«¤é¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹¡£
Signature¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ï¡¢¥Ç¥¸¥¿¥ë½ð̾¥¢¥ë¥´¥ê¥º¥à¤Îµ¡Ç½¤Ø¤Î¥¢¥¯¥»¥¹¤òÄ󶡤·¤Þ¤¹¡£SignatureSpi¥µ¥Ö¥¯¥é¥¹¤Ë¼ÂºÝ¤ËÄ󶡤µ¤ì¤ë¼ÂÁõ¤Ï¡¢DSA ¤ò»È¤¦ SHA-1¡¢RSA ¤ò»È¤¦ SHA-1¡¢¤Þ¤¿¤Ï RSA ¤ò»È¤¦ MD5 ¤Ê¤É¤ÎÆÃÄê¤Î¼ïÎà¤Î½ð̾¥¢¥ë¥´¥ê¥º¥à¤È¤Ê¤ê¤Þ¤¹¡£¥¨¥ó¥¸¥ó¥¯¥é¥¹¤¬Ä󶡤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¡¢Service Provider Interface (SPI) ¤È¤·¤Æ¼ÂÁõ¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢³Æ¥¨¥ó¥¸¥ó¥¯¥é¥¹¤ËÂбþ¤¹¤ëÃê¾Ý SPI ¥¯¥é¥¹¤¬Â¸ºß¤·¡¢¤³¤ÎÃê¾Ý SPI ¥¯¥é¥¹¤Ë¤è¤Ã¤Æ°Å¹æ²½¥µ¡¼¥Ó¥¹¥×¥í¥Ð¥¤¥À¤¬¼ÂÁõ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ SPI ¥á¥½¥Ã¥É¤¬ÄêµÁ¤µ¤ì¤Þ¤¹¡£
¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¢¤ë API ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢Âбþ¤¹¤ë SPI ¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹ SPI ¥ª¥Ö¥¸¥§¥¯¥È¤ò private ¥Õ¥£¡¼¥ë¥É¤È¤·¤Æ¥«¥×¥»¥ë²½¤·¤Þ¤¹¡£API ¥ª¥Ö¥¸¥§¥¯¥È¤Î¤¹¤Ù¤Æ¤Î API ¥á¥½¥Ã¥É¤Ï¡¢final ¤È¤·¤ÆÀë¸À¤·¡¢¤½¤ì¤é¤ò¼ÂÁõ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¥«¥×¥»¥ë²½¤µ¤ì¤ë SPI ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÂбþ¤¹¤ë SPI ¥á¥½¥Ã¥É¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£¥¨¥ó¥¸¥ó¥¯¥é¥¹ (¤ª¤è¤Ó¤½¤ì¤ËÂбþ¤¹¤ë SPI ¥¯¥é¥¹) ¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¡¢¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Î
getInstance¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É¤Ø¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤Þ¤¹¡£SPI ¥¯¥é¥¹¤Î̾Á°¤Ï¡¢Âбþ¤¹¤ë¥¨¥ó¥¸¥ó¥¯¥é¥¹Ì¾¤Î¤¢¤È¤Ë
Spi¤òÄɲä·¤¿Ì¾Á°¤Ë¤Ê¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢Signature¥¨¥ó¥¸¥ó¥¯¥é¥¹¤ËÂбþ¤¹¤ë SPI ¥¯¥é¥¹¤Ï¡¢SignatureSpi¥¯¥é¥¹¤Ç¤¹¡£³Æ SPI ¥¯¥é¥¹¤Ï¡¢Ãê¾Ý¥¯¥é¥¹¤Ç¤¹¡£»ØÄꤷ¤¿¥¢¥ë¥´¥ê¥º¥à¤ËÂФ¹¤ëÆÃÄê¤Î·¿¤Î¥µ¡¼¥Ó¥¹¤Î¼ÂÁõ¤òÄ󶡤¹¤ë¤Ë¤Ï¡¢¥×¥í¥Ð¥¤¥À¤Ï¡¢Âбþ¤¹¤ë SPI ¥¯¥é¥¹¤ò¥µ¥Ö¥¯¥é¥¹²½¤·¤Æ¡¢¤¹¤Ù¤Æ¤ÎÃê¾Ý¥á¥½¥Ã¥É¤Î¼ÂÁõ¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¥¨¥ó¥¸¥ó¥¯¥é¥¹¤ÎÊ̤ÎÎã¤Ë
MessageDigest¥¯¥é¥¹¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤Ï¡¢¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¥¢¥ë¥´¥ê¥º¥à¤Ø¤Î¥¢¥¯¥»¥¹¤òÄ󶡤·¤Þ¤¹¡£MessageDigestSpi¥µ¥Ö¥¯¥é¥¹¤Ç¤Î¤³¤Î¥¯¥é¥¹¤Î¼ÂÁõ¤Ï¡¢SHA-1¡¢MD5¡¢¤Þ¤¿¤Ï MD2 ¤Ê¤É¤Î³Æ¼ï¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¥¢¥ë¥´¥ê¥º¥à¤Ë¤Ç¤¤Þ¤¹¡£¤µ¤é¤ËÊ̤ÎÎã¤È¤·¤Æ¡¢
KeyFactory¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ï¡¢ÉÔÆ©ÌÀ¤Ê¸°¤«¤éÆ©ÌÀ¤Ê¸°»ÅÍͤؤÎÊÑ´¹¡¢¤Þ¤¿¤Ï¤½¤ÎµÕ¤ÎÊÑ´¹¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¡Ö¸°»ÅÍͤΥ¤¥ó¥¿¥Õ¥§¡¼¥¹¤ª¤è¤Ó¥¯¥é¥¹¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£KeyFactorySpi¥µ¥Ö¥¯¥é¥¹¤Ï¡¢DSA ¸ø³«¸°¤ä DSA Èó¸ø³«¸°¤Ê¤É¤ÎÆÃÄê¤Î¼ïÎà¤Î¸°¤Î¼ÂºÝ¤Î¼ÂÁõ¤òÄ󶡤·¤Þ¤¹¡£¼ÂÁõ¤È¥×¥í¥Ð¥¤¥À
³Æ¼ï°Å¹æ²½¥µ¡¼¥Ó¥¹¤Î¼ÂÁõ¤Ï¡¢JCA °Å¹æ²½¥µ¡¼¥Ó¥¹¥×¥í¥Ð¥¤¥À¤¬Ä󶡤·¤Þ¤¹¡£°Å¹æ²½¥µ¡¼¥Ó¥¹¥×¥í¥Ð¥¤¥À¤È¤Ï¡¢1 ¤Ä¤Þ¤¿¤ÏÊ£¿ô¤Î°Å¹æ²½¥µ¡¼¥Ó¥¹¤Î¼ÂÁõ¤òÄ󶡤¹¤ë´ðËܥѥ屡¼¥¸¤Ç¤¹¡£¡Ö¥¨¥ó¥¸¥ó¥¯¥é¥¹¤È¥¢¥ë¥´¥ê¥º¥à¡×¤Ë¤Ï¡¢Java 2 SDK ¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥×¥í¥Ð¥¤¥À¤Ç¤¢¤ë SUN ¤¬Ä󶡤¹¤ë¼ÂÁõ¤Î°ìÍ÷¤¬µºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¾¤Î¥×¥í¥Ð¥¤¥À¤Ï¡¢¾åµ¤Î¥µ¡¼¥Ó¥¹¤Þ¤¿¤Ï¤½¤Î¾¤Î¥µ¡¼¥Ó¥¹ (RSA ¥Ù¡¼¥¹¤Î½ð̾¥¢¥ë¥´¥ê¥º¥à¤ä MD2 ¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¥¢¥ë¥´¥ê¥º¥à¤Ê¤É) ¤Ë¤Ä¤¤¤Æ¡¢ÆÈ¼«¤Î¼ÂÁõ¤òÄêµÁ¤Ç¤¤Þ¤¹¡£
¼ÂÁõ¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò³ÍÆÀ¤¹¤ë¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É
API ¤Î³Æ¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥¨¥ó¥¸¥ó¥¯¥é¥¹ÆÃͤΡ֥ե¡¥¯¥È¥ê¥á¥½¥Ã¥É¡×¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤Ã¤ÆÆÃÄê¤Î¼ÂÁõ¤¬Í׵ᤵ¤ì¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É¤Ï¡¢¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÊÖ¤¹ static ¥á¥½¥Ã¥É¤Ç¤¹¡£
¤¿¤È¤¨¤Ð¡¢³ºÅö¤Î
Signature¥ª¥Ö¥¸¥§¥¯¥È³ÍÆÀµ¡¹½¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£¥æ¡¼¥¶¤ÏSignature¥¯¥é¥¹¤ÎgetInstance¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢¥ª¥Ö¥¸¥§¥¯¥È¤òÍ׵ᤷ¤Þ¤¹¡£½ð̾¥¢¥ë¥´¥ê¥º¥à̾ (SHA1withDSA ¤Ê¤É) ¤ò»ØÄꤷ¡¢¥ª¥×¥·¥ç¥ó¤Ç¥×¥í¥Ð¥¤¥À¤Þ¤¿¤ÏProvider¥¯¥é¥¹¤Î̾Á°¤â»ØÄꤷ¤Þ¤¹¡£getInstance¥á¥½¥Ã¥É¤¬¡¢»ØÄê¤Î¥¢¥ë¥´¥ê¥º¥à¤ª¤è¤Ó¥×¥í¥Ð¥¤¥À¤Î¥Ñ¥é¥á¡¼¥¿¤òËþ¤¿¤¹¼ÂÁõ¤ò¸¡º÷¤·¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À¤Î»ØÄ꤬¤Ê¤¤¾ì¹ç¡¢getInstance¤ÏÍ¥Àè½ç°Ì¤Ë½¾¤Ã¤ÆÅÐÏ¿¥×¥í¥Ð¥¤¥À¤ò¸¡º÷¤·¡¢»ØÄê¤Î¥¢¥ë¥´¥ê¥º¥à¤òËþ¤¿¤¹¼ÂÁõ¤ò¸«¤Ä¤±½Ð¤·¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À¤ÎÅÐÏ¿¤Î¾ÜºÙ¤Ï¡¢Provider¥¯¥é¥¹¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£°Å¹æ²½¤Î³µÍ×
¤³¤Î¥»¥¯¥·¥ç¥ó¤Ç¤Ï¡¢API ¤Ë¤è¤ê¼ÂÁõ¤µ¤ì¤ë³µÇ°¡¢¤ª¤è¤Ó API »ÅÍͤǻÈÍѤµ¤ì¤ëµ»½ÑÍѸì¤ÎÀµ³Î¤Ê°ÕÌ£¤Ë´Ø¤¹¤ë¹âÅÙ¤ÊÀâÌÀ¤òÄ󶡤·¤Þ¤¹¡£
°Å¹æ²½¤ª¤è¤Ó°Å¹æ²òÆÉ
°Å¹æ²½¤È¤Ï¡¢¥Ç¡¼¥¿ (¡Ö¥¯¥ê¥¢¥Æ¥¥¹¥È¡×¤È¸Æ¤Ð¤ì¤ë) ¤ª¤è¤Óû¤¤Ê¸»úÎó (¡Ö¥¡¼¡×) ¤ò¼õ¤±¼è¤Ã¤Æ¡¢¸°¤òÃΤé¤Ê¤¤¥µ¡¼¥É¥Ñ¡¼¥Æ¥£¤Ë¤È¤Ã¤ÆÌµ°ÕÌ£¤Ê¥Ç¡¼¥¿ (¡Ö°Å¹æ¥Æ¥¥¹¥È¡×) ¤òÀ¸À®¤¹¤ë½èÍý¤Ç¤¹¡£°Å¹æ²òÆÉ¤È¤Ï¤½¤ÎµÕ¤Ç¡¢°Å¹æ¥Æ¥¥¹¥È¤ª¤è¤Óû¤¤¸°Ê¸»úÎó¤ò¼õ¤±¼è¤ê¡¢¥¯¥ê¥¢¥Æ¥¥¹¥È¤òÀ¸À®¤¹¤ë½èÍý¤Ç¤¹¡£
¥Ñ¥¹¥ï¡¼¥É¥Ù¡¼¥¹°Å¹æ²½
¥Ñ¥¹¥ï¡¼¥É¥Ù¡¼¥¹°Å¹æ²½ (PBE) ¤Ç¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤«¤é°Å¹æ²½¸°¤òƳ¤½Ð¤·¤Þ¤¹¡£¥Ñ¥¹¥ï¡¼¥É¤«¤é°Å¹æ²½¸°¤ò¼èÆÀ¤·¤è¤¦¤È¤¹¤ë¹¶·â¼Ô¤Î¥¿¥¹¥¯¤òÈó¾ï¤Ë»þ´Ö¤Î¤«¤«¤ë¤â¤Î¤Ë¤¹¤ë¤¿¤á¡¢ÂçȾ¤Î PBE ¼ÂÁõ¤Ç¤Ï¡¢¥¡¼¤ÎºîÀ®»þ¤ËÍð¿ô¤Ø¤Îº®Æþ (salt ¤È¸Æ¤Ð¤ì¤ë) ¤¬¹Ô¤ï¤ì¤Þ¤¹¡£
°Å¹æ
°Å¹æ²½¤ª¤è¤Ó°Å¹æ²òÆÉ¤Ï¡¢°Å¹æ¤ò»È¤Ã¤Æ¹Ô¤ï¤ì¤Þ¤¹¡£°Å¹æ¤È¤Ï¡¢°Å¹æ²½Êý¼°¤Ë½¾¤Ã¤Æ°Å¹æ²½¤ª¤è¤Ó°Å¹æ²òÆÉ¤ò¼Â¹Ô²Äǽ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Î¤³¤È¤Ç¤¹¡£
¸°¶¨Äê
¸°¶¨Äê¤È¤Ï¡¢Ê£¿ô¤Î¥Ñ¡¼¥Æ¥£¤¬ÈëÌ©¾ðÊó¤ò¸ò´¹¤·¤Ê¤¯¤Æ¤âƱ¤¸°Å¹æ²½¸°¤ò³ÎΩ²Äǽ¤Ê¥×¥í¥È¥³¥ë¤ò»Ø¤·¤Þ¤¹¡£
¥á¥Ã¥»¡¼¥¸Ç§¾Ú¥³¡¼¥É
¥á¥Ã¥»¡¼¥¸Ç§¾Ú¥³¡¼¥É (MAC) ¤Ï¡¢¿®Íê¤Ç¤¤Ê¤¤ÇÞÂΤËÁ÷¿®¤Þ¤¿¤Ï³ÊǼ¤µ¤ì¤¿¾ðÊó¤Î´°Á´À¤ò¡¢ÈëÌ©¸°¤Ë´ð¤Å¤¤¤Æ¥Á¥§¥Ã¥¯¤¹¤ëÊýË¡¤òÄ󶡤·¤Þ¤¹¡£°ìÈ̤ˡ¢¥á¥Ã¥»¡¼¥¸Ç§¾Ú¥³¡¼¥É¤Ï¡¢ÈëÌ©¸°¤ò¶¦Í¤¹¤ë 2 ¤Ä¤Î¥Ñ¡¼¥Æ¥£´Ö¤ÇÁ÷¿®¤µ¤ì¤ë¾ðÊó¤Î͸úÀ¤ò¸¡¾Ú¤¹¤ë¾ì¹ç¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£
°Å¹æ²½¥Ï¥Ã¥·¥åµ¡Ç½¤Ë´ð¤Å¤¯MAC µ¡¹½¤Ï¡¢HMAC ¤È¸Æ¤Ð¤ì¤Þ¤¹¡£HMAC ¤Ï¡¢ÈëÌ©¶¦Í¸°¤ÈÁȤ߹ç¤ï¤»¤Æ¡¢MD5 ¤ä SHA-1 ¤Ê¤É¤ÎǤ°Õ¤Î°Å¹æ²½¥Ï¥Ã¥·¥åµ¡Ç½¤Ç»ÈÍѤǤ¤Þ¤¹¡£HMAC ¤Ë¤Ä¤¤¤Æ¤Ï¡¢RFC 2104 ¤Çµ¬Äꤵ¤ì¤Æ¤¤¤Þ¤¹¡£
v1.4 ¤È v5.0 ¤Ç¤Î JCE ¤ÎÁê°ãÅÀ¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£
- PKCS #11 ¤ÎÄɲõ¡Ç½¤Î¥µ¥Ý¡¼¥È
- Solaris °Å¹æ²½¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤ÎÅý¹ç
- ECC ¥¢¥ë¥´¥ê¥º¥à¤Î¥µ¥Ý¡¼¥È
- JCA/JCE ¤Ø¤Î
ByteBufferAPI ¥µ¥Ý¡¼¥È¤ÎÄɲÃRC2ParameterSpec¤Î¥µ¥Ý¡¼¥È- XML °Å¹æ²½ RSA-OAEP ¥¢¥ë¥´¥ê¥º¥à¤Î´°Á´¤Ê¥µ¥Ý¡¼¥È
javax.crypto.EncryptedPrivateKeyInfo¤«¤é¤ÎPKCS8EncodedKeySpec¤Î¼èÆÀ¤Î´Êά²½- ¡ÖPBEWithSHA1AndDESede¡×¤È¡ÖPBEWithSHA1AndRC2_40¡×°Å¹æ¤Î¥µ¥Ý¡¼¥È
- JCE Block Encryption °Å¹æ¤Ç¤Î XML Encryption Padding ¥¢¥ë¥´¥ê¥º¥à¤Î¥µ¥Ý¡¼¥È
- ¸°¤ÎºÇÂçµöÍÆÄ¹¤ÎưŪȽÄê
- SunJCE ¥×¥í¥Ð¥¤¥À¤Ø¤Î RSA °Å¹æ²½¤Î¥µ¥Ý¡¼¥È
- SunJCE ¥×¥í¥Ð¥¤¥À¤Ø¤Î RC2 ¤ª¤è¤Ó ARCFOUR °Å¹æ¤Î¥µ¥Ý¡¼¥È
- HmacSHA256¡¢HmacSHA384¡¢¤ª¤è¤Ó HmacSHA512 ¤Î¥µ¥Ý¡¼¥È
PKCS #11 ¥Ù¡¼¥¹¤Î°Å¹æ¥×¥í¥Ð¥¤¥À¤Î¥µ¥Ý¡¼¥È
5.0 ¤Ç¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¤Î PKCS#11 API ¤ËÂФ¹¤ëÈÆÍÑ¥²¡¼¥È¥¦¥§¥¤¤È¤·¤ÆÆ°ºî¤¹¤ë JCA/JCE ¥×¥í¥Ð¥¤¥À¡¢SunPKCS11¤¬¼ÂÁõ¤µ¤ì¤Þ¤·¤¿¡£PKCS #11 ¤Ï°Å¹æ¥¢¥¯¥»¥é¥ì¡¼¥¿¤Î¥Ç¥Õ¥¡¥¯¥È¥¹¥¿¥ó¥À¡¼¥É¤Ç¡¢°Å¹æ²½¥¹¥Þ¡¼¥È¥«¡¼¥É¤Ø¤Î¥¢¥¯¥»¥¹¤Ë¹¤¯»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£´ÉÍý¼Ô¤ª¤è¤Ó¥æ¡¼¥¶¤Ï¡¢¤³¤Î¥×¥í¥Ð¥¤¥À¤òÀßÄꤷ¤Æ¡¢Ç¤°Õ¤Î PKCS#1 v2.x ¸ß´¹¥È¡¼¥¯¥ó¤ÈÄÌ¿®¤Ç¤¤Þ¤¹¡£ÀßÄê¥Õ¥¡¥¤¥ë·Á¼°¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£
Solaris °Å¹æ²½¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤ÎÅý¹ç
¥Ç¥Õ¥©¥ë¥È¤Î Java ¥»¥¥å¥ê¥Æ¥£¥×¥í¥Ð¥¤¥ÀÀßÄ꤬ 5.0 ¤ÇÊѹ¹¤µ¤ì¡¢Solaris 10 ¤Ç¤Ï Solaris °Å¹æ²½¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤ò»ÈÍѤ¹¤ë
SunPKCS11¥×¥í¥Ð¥¤¥À¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬´Þ¤Þ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¤³¤ì¤ÏºÇ¹â¤ÎÍ¥ÀèÅÙ¤ò¤â¤Ä¥×¥í¥Ð¥¤¥À¤Ç¡¢´û¸¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¹¤Ù¤Æ¤¬ Solaris 10 ¤Ç¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¸þ¾å¤Î¥á¥ê¥Ã¥È¤òµý¼õ¤Ç¤¤Þ¤¹¡£Solaris 8 ¤ª¤è¤Ó Solaris 9 ¤Ç¤Îưºî¤ËÊѹ¹¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤³¤ÎÊѹ¹¤Î¤¿¤á¡¢¤¹¤Ù¤Æ¤Î Solaris 10 ¥·¥¹¥Æ¥à¤Ç¤Ï¡¢Â¿¤¯¤Î°Å¹æ²½±é»»¤¬°ÊÁ°¤Î²¿Çܤâ¤Î®Å٤Ǽ¹Ԥµ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£°Å¹æ¤Ë¤è¤ë¥Ï¡¼¥É¥¦¥§¥¢¹â®²½¤òÅëºÜ¤·¤¿¥·¥¹¥Æ¥à¤Ç¤Ï¡¢100 ÇܤΥѥե©¡¼¥Þ¥ó¥¹¸þ¾å¤ò¸«¹þ¤á¤Þ¤¹¡£
ECC ¥¢¥ë¥´¥ê¥º¥à¤Î¥µ¥Ý¡¼¥È
5.0 ¤è¤êÁ°¤Ç¤Ï¡¢JCA/JCE ¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ç¤Ï¡¢ECC ´ØÏ¢¤Î°Å¹æ²½¥¢¥ë¥´¥ê¥º¥à¤Î¥¯¥é¥¹¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£ECC ¤òÍøÍѤ¹¤ë¥æ¡¼¥¶¤Ï¡¢ECC ¤ò¼ÂÁõ¤·¤¿¥µ¡¼¥É¥Ñ¡¼¥Æ¥£¤Î¥é¥¤¥Ö¥é¥ê¤ËÍê¤é¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£¤·¤«¤·¡¢¤³¤Î¤è¤¦¤Ê¥é¥¤¥Ö¥é¥ê¤Ï´û¸¤Î JCA/JCE ¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤È¤Ï¤¦¤Þ¤¯Åý¹ç¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£5.0 °Ê¹ß¤Ï¡¢ECC ¤ò¥µ¥Ý¡¼¥È¤¹¤ë¥×¥í¥Ð¥¤¥ÀÍѤΠECC ¥¯¥é¥¹¤¬´°Á´¤Ë¥µ¥Ý¡¼¥È¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
¼¡¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤¬Äɲ䵤ì¤Þ¤·¤¿¡£
- java.security.spec.ECField
- java.security.interfaces.ECKey
- java.security.interfaces.ECPublicKey
- java.security.interfaces.ECPrivateKey
¼¡¤Î¥¯¥é¥¹¤¬Äɲ䵤ì¤Þ¤·¤¿¡£
ByteBuffer API ¥µ¥Ý¡¼¥È¤ÎÄɲÃ
ByteBuffer °ú¿ô¤ò¤È¤ë¥á¥½¥Ã¥É¤¬¡¢¥Ð¥ë¥¯¥Ç¡¼¥¿¤Î½èÍý¤Ë»ÈÍѤ¹¤ë JCE API ¤ª¤è¤Ó SPI ¥¯¥é¥¹¤ËÄɲ䵤ì¤Þ¤·¤¿¡£ByteBuffer ¤ò byte[] ¤è¤ê¸úΨŪ¤Ë½èÍý¤Ç¤¤ë¾ì¹ç¡¢¥×¥í¥Ð¥¤¥À¤Ï engine* ¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Ç¤¤Þ¤¹¡£¼¡¤Î JCE ¥á¥½¥Ã¥É¤¬ ByteBuffer ¤Î¥µ¥Ý¡¼¥È¤Î¤¿¤á¤ËÄɲ䵤ì¤Þ¤·¤¿¡£
javax.crypto.Mac.update(ByteBuffer input)¼¡¤Î JCA ¥á¥½¥Ã¥É¤¬ ByteBuffer ¤Î¥µ¥Ý¡¼¥È¤Î¤¿¤á¤ËÄɲ䵤ì¤Þ¤·¤¿¡£
javax.crypto.MacSpi.engineUpdate(ByteBuffer input)
javax.crypto.Cipher.update(ByteBuffer input, ByteBuffer output)
javax.crypto.Cipher.doFinal(ByteBuffer input, ByteBuffer output)
javax.crypto.CipherSpi.engineUpdate(ByteBuffer input, ByteBuffer output)
javax.crypto.CipherSpi.engineDoFinal(ByteBuffer input, ByteBuffer output)java.security.MessageDigest.update(ByteBuffer input)
java.security.Signature.update(ByteBuffer data)
java.security.SignatureSpi.engineUpdate(ByteBuffer data)
java.security.MessageDigestSpi.engineUpdate(ByteBuffer input)RC2ParameterSpec ¤Î¥µ¥Ý¡¼¥È
5.0 ¤Ç¤Ï RC2 ¥¢¥ë¥´¥ê¥º¥à¼ÂÁõ¤¬³ÈÄ¥¤µ¤ì¡¢ÆþÎϤµ¤ì¤¿¸°¤ÎŤµ¤È¤Ï°Û¤Ê¤ë͸ú¤Ê¸°¥µ¥¤¥º¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£XML °Å¹æ²½ RSA-OAEP ¥¢¥ë¥´¥ê¥º¥à¤Î´°Á´¥µ¥Ý¡¼¥È
5.0 ¤è¤êÁ°¤ÎJCE ¤Ç¤Ï¡¢PKCS#1 v2.1 ¤ª¤è¤Ó W3C Recommendation for XML Encryption ¤Î RSA-OAEP ¸°Å¾Á÷¥¢¥ë¥´¥ê¥º¥à¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¡¢OAEP ¤ª¤è¤Ó PSS ¥Ñ¥Ç¥£¥ó¥°¤Ç»ÈÍѤµ¤ì¤ë¥Ç¥Õ¥©¥ë¥È°Ê³°¤ÎÃͤò»ØÄꤹ¤ë¥Ñ¥é¥á¡¼¥¿¥¯¥é¥¹¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£¤·¤¿¤¬¤Ã¤Æ¡¢OAEP ¤ª¤è¤Ó PSS ¥Ñ¥Ç¥£¥ó¥°¤Ë»ÈÍѤµ¤ì¤¿¥Ç¥Õ¥©¥ë¥È°Ê³°¤ÎÃͤò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç»ØÄꤹ¤ë°ìÈÌŪ¤ÊÊýË¡¤Ï¤¢¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£
5.0 ¤Ç¤Ï¡¢¿·¤·¤¤¥Ñ¥é¥á¡¼¥¿¥¯¥é¥¹¤¬Äɲ䵤졢OAEP ¥Ñ¥Ç¥£¥ó¥°¤¬´°Á´¤Ë¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢PSS ¥Ñ¥é¥á¡¼¥¿¥¯¥é¥¹¤¬³ÈÄ¥¤µ¤ì¤Æ¡¢API ¤¬ RSA PSS ¥·¥°¥Ë¥Á¥ã¡¼¼ÂÁõ¤ò´°Á´¤Ë¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤µ¤é¤Ë¡¢SunJCE ¥×¥í¥Ð¥¤¥À¤¬³ÈÄ¥¤µ¤ì¡¢OAEPPadding ¤¬»ÈÍѤµ¤ì¤¿¾ì¹ç¤Ë¡¢
OAEPParameterSpec¤ò¼õ¤±Æþ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¼¡¤Î¥¯¥é¥¹¤¬Äɲ䵤ì¤Þ¤·¤¿¡£
¼¡¤Î¥á¥½¥Ã¥É¤ª¤è¤Ó¥Õ¥£¡¼¥ë¥É¤¬¡¢
java.security.spec.PSSParameterSpec¤ËÄɲ䵤ì¤Þ¤·¤¿¡£public static final PSSParameterSpec DEFAULT
public PSSParameterSpec(String mdName, String mgfName,
AlgorithmParameterSpec mgfSpec,
int saltLen, int trailerField)
public String getDigestAlgorithm()
public String getMGFAlgorithm()
public AlgorithmParameterSpec getMGFParameters()
public int getTrailerField()
javax.crypto.EncryptedPrivateKeyInfo ¤«¤é¤Î PKCS8EncodedKeySpec ¤Î¼èÆÀ¤Î´Êά²½5.0 ¤Ç¤Ï¡¢javax.crypto.EncryptedPrivateKeyInfo¤Ï¤¿¤À 1 ¤Ä¤Î¥á¥½¥Ã¥ÉgetKeySpec(Cipher)¤ò»ý¤Á¡¢°Å¹æ²½¤µ¤ì¤¿¥Ç¡¼¥¿¤«¤éPKCS8EncodedKeySpec¤ò¼èÆÀ¤·¤Þ¤¹¡£¤³¤ÎÀ©¸Â¤Î¤¿¤á¡¢¥æ¡¼¥¶¤Ï°Å¹æ²òÆÉ¸°¤ª¤è¤Ó¥Ñ¥é¥á¡¼¥¿¤Ç½é´ü²½¤µ¤ì¤ë°Å¹æ¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥æ¡¼¥¶¤¬°Å¹æ²òÆÉ¸°¤Î¤ß¤ò»ý¤Ä¾ì¹ç¡¢¤Þ¤º¥Ñ¥é¥á¡¼¥¿¤ò¤³¤ÎEncryptedPrivateKeyInfo¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼èÆÀ¤·¡¢Å¬¹ç¤¹¤ëCipher¼ÂÁõ¤ò³ÎÊݤ·¡¢½é´ü²½¤·¡¢¤½¤·¤ÆgetKeySpec(Cipher)¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤µ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
EncyptedPrivateKeyInfo¤Î»ÈÍѤò¤è¤ê´Êñ¤Ë¤·¡¢API ¤Ëjavax.crypto.SealedObject¤È°ì´ÓÀ¤ò»ý¤¿¤»¤ë¤¿¤á¡¢¼¡¤Î¥á¥½¥Ã¥É¤¬ javax.crypto.EncryptedPrivateKeyInfo ¤ËÄɲ䵤ì¤Þ¤·¤¿¡£getKeySpec(Key decryptKey)
getKeySpec(Key decryptKey, String provider)
1.4.2 ¤Ç¤Ï¡¢J2SE ¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤¿°Å¹æ²½´É³í¥Ý¥ê¥·¡¼¥Õ¥¡¥¤¥ë¤Ë¤è¤Ã¤Æ¡¢°Å¹æ/°Å¹æ²òÆÉ¤Ë»ÈÍѤ¹¤ë¸°¤ÎºÇÂ獬À©¸Â¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢¤¢¤ë¼ï¤Î°Å¹æ¥¢¥ë¥´¥ê¥º¥à¤Î¥Ñ¥é¥á¡¼¥¿ÃͤâÀ©¸Â¤µ¤ì¤Þ¤¹¡£À©¸Â¤Î¤Ê¤¤°Å¹æ²½´É³í¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤¿¤¤¥æ¡¼¥¶¤Ï¡¢¥Õ¥¡¥¤¥ë¤ò¸ÄÊ̤˥À¥¦¥ó¥í¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢Cipher ¥¤¥ó¥¹¥¿¥ó¥¹¤¬¡¢°Å¹æ²½´É³í¥Õ¥¡¥¤¥ë¤ÇµöÍÆ¤µ¤ì¤¿ºÇÂçÃͤòͤ¨¤ë¸° (¤Þ¤¿¤Ï¤¢¤ë¼ï¤Î°Å¹æ¥¢¥ë¥´¥ê¥º¥à¤Î¥Ñ¥é¥á¡¼¥¿) ¤Ç½é´ü²½¤µ¤ì¤ë¤È¡¢Îã³°¤¬¥¹¥í¡¼¤µ¤ì¤Þ¤¹¡£
5.0 ¤Ç¤Ï¡¢
Cipher¥¯¥é¥¹¤¬¹¹¿·¤µ¤ì¡¢´É³í¥Ý¥ê¥·¡¼¥Õ¥¡¥¤¥ë¤ÇÀßÄꤵ¤ì¤¿¸°¤ÎºÇÂçŤª¤è¤Ó¥Ñ¥é¥á¡¼¥¿¤òÄêµÁ¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤¿¤á¡¢¥Ç¥Õ¥©¥ë¥È¤Î (¶¯ÅÙ¤ÎÀ©¸Â¤µ¤ì¤¿) ´É³í¥Ý¥ê¥·¡¼¥Õ¥¡¥¤¥ë¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¤è¤êû¤«¤¤¸°¤ò»ÈÍѤǤ¤Þ¤¹¡£¼¡¤Î¥á¥½¥Ã¥É¤¬ javax.crypto.Cipher ¤ËÄɲ䵤ì¤Þ¤·¤¿¡£
public static final int getMaxAllowedKeyLength(String transformation)
throws NoSuchAlgorithmException
public static final AlgorithmParameterSpec
getMaxAllowedParameterSpec(String transformation)
throws NoSuchAlgorithmException;
HmacSHA-256¡¢HmacSHA-384¡¢¤ª¤è¤Ó HmacSHA-512 ¥¢¥ë¥´¥ê¥º¥à¤Î¥µ¥Ý¡¼¥È¤¬ 5.0 ¤ÇÄɲ䵤ì¤Þ¤·¤¿¡£
°ìÈ̤˥¢¥¯¥»¥¹¤Ç¤¤ë RSA °Å¹æ²½¼ÂÁõ¤¬¡¢SunJCE ¥×¥í¥Ð¥¤¥À¤ËÄɲ䵤ì¤Þ¤·¤¿¡£
SunJCE ¥×¥í¥Ð¥¤¥À¤Ë¡¢RC2 (RFC 2268) ¤ª¤è¤Ó ARCFOUR (RC4TM ¸ß´¹¥¢¥ë¥´¥ê¥º¥à) °Å¹æ¤¬¼ÂÁõ¤µ¤ì¤Þ¤·¤¿¡£
SunJCE ¥×¥í¥Ð¥¤¥À¤Ë¡¢PBEWithSHA1AndDESede ¤È PBEWithSHA1AndRC2_40 °Å¹æ¤Î¥µ¥Ý¡¼¥È¤¬Äɲ䵤ì¤Þ¤·¤¿¡£
W3C XML °Å¹æ¤Ç¡¢¿·¤·¤¤¥Ñ¥Ç¥£¥ó¥°¥¢¥ë¥´¥ê¥º¥à¡¢¥Ö¥í¥Ã¥¯°Å¹æ¤ËÂФ¹¤ë¡ÖISO10126Padding¡×¤¬ÄêµÁ¤µ¤ì¤Þ¤¹¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö5.2 Block Encryption Algorithms¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£Sun ¤Î¥×¥í¥Ð¥¤¥À¤ò XML °Å¹æ¼ÂÁõ¤ª¤è¤Ó JSR 106 ¥×¥í¥Ð¥¤¥À¤Ç»ÈÍѤǤ¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¡¢5.0 ¤Ç¤Ï¤³¤Î¥Ñ¥Ç¥£¥ó¥°¤ËÂФ¹¤ë¥µ¥Ý¡¼¥È¤¬Äɲ䵤ì¤Þ¤·¤¿¡£
¤³¤Î¹à¤Ç¤Ï¡¢Java °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã¤ÇÄ󶡤¹¤ë¥³¥¢¥¯¥é¥¹¤È¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£
¥¨¥ó¥¸¥ó ¥¯¥é¥¹
Provider¥¯¥é¥¹¤ÈSecurity¥¯¥é¥¹
MessageDigest¡¢Signature¡¢KeyPairGenerator¡¢KeyFactory¡¢AlgorithmParameters¡¢AlgorithmParameterGenerator¡¢CertificateFactory¡¢KeyStore¡¢SecureRandom¡¢CertPathBuilder¡¢CertPathValidator¡¢¤ª¤è¤ÓCertStore
Key¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ª¤è¤Ó¥¯¥é¥¹
¡Ö¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Î»ÅÍͤΥ¤¥ó¥¿¥Õ¥§¡¼¥¹¤ª¤è¤Ó¥¯¥é¥¹¡×¤ª¤è¤Ó¡Ö¸°»ÅÍͤΥ¤¥ó¥¿¥Õ¥§¡¼¥¹¤ª¤è¤Ó¥¯¥é¥¹¡× ¤³¤Î¹à¤Ç¤Ï¡¢³Æ¥¯¥é¥¹¤ª¤è¤Ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥á¥¤¥ó¥á¥½¥Ã¥É¤Î½ð̾¤ò¼¨¤·¤Þ¤¹¡£³ºÅö¤¹¤ëÎã¤Î¹à¤Ë¤Ï¡¢¥¯¥é¥¹ (
MessageDigest¡¢Signature¡¢KeyPairGenerator¡¢SecureRandom¡¢KeyFactory¡¢¤ª¤è¤Ó¸°»ÅÍÍ¥¯¥é¥¹) ¤ÎÎ㤬¤¢¤ê¤Þ¤¹¡£ Security API ¥Ñ¥Ã¥±¡¼¥¸¤Î´°Á´¤Ê¥ê¥Õ¥¡¥ì¥ó¥¹¥É¥¥å¥á¥ó¥È¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£
java.security ¥Ñ¥Ã¥±¡¼¥¸¤Î³µÍ×java.security.spec ¥Ñ¥Ã¥±¡¼¥¸¤Î³µÍ×java.security.interfaces ¥Ñ¥Ã¥±¡¼¥¸¤Î³µÍ×java.security.cert ¥Ñ¥Ã¥±¡¼¥¸¤Î³µÍ×
Provider ¥¯¥é¥¹¡Ö°Å¹æ²½¥µ¡¼¥Ó¥¹¥×¥í¥Ð¥¤¥À¡×(¤³¤Î¥É¥¥å¥á¥ó¥È¤Ç¤Ï¡Ö¥×¥í¥Ð¥¤¥À¡×¤È¤â¸Æ¤Ð¤ì¤ë) ¤È¤Ï¡¢Java 2 SDK Security API ¤Î°Å¹æ²½µ¡Ç½¤Î¥µ¥Ö¥»¥Ã¥È¤Î¸ÇÄê¼ÂÁõ¤òÄ󶡤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¥»¥Ã¥È¤Ç¤¹¡£
Provider¥¯¥é¥¹¤Ï¡¢¤³¤Î¤è¤¦¤Ê¥Ñ¥Ã¥±¡¼¥¸¤ä¥Ñ¥Ã¥±¡¼¥¸¥»¥Ã¥È¤Ø¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¹¡£¥×¥í¥Ð¥¤¥À̾¡¢¥Ð¡¼¥¸¥ç¥óÈֹ桢¤½¤Î¾¤Î¾ðÊó¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î¥á¥½¥Ã¥É¤òÈ÷¤¨¤Æ¤¤¤Þ¤¹¡£Provider¥¯¥é¥¹¤ò»ÈÍѤ¹¤ë¤È¡¢°Å¹æ²½¥µ¡¼¥Ó¥¹¤Î¼ÂÁõ¤òÅÐÏ¿¤¹¤ë¤À¤±¤Ç¤Ê¤¯¡¢¤½¤Î¾¤Î¥»¥¥å¥ê¥Æ¥£¥µ¡¼¥Ó¥¹¤Î¼ÂÁõ¤òÅÐÏ¿¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤½¤Î¾¤Î¥»¥¥å¥ê¥Æ¥£¥µ¡¼¥Ó¥¹¤Ï¡¢Java 2 SDK Security API ¤Þ¤¿¤Ï¤½¤Î³ÈÄ¥µ¡Ç½¤Î 1 ¤Ä¤Î°ìÉô¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£°Å¹æ²½¥µ¡¼¥Ó¥¹¤Î¼ÂÁõ¤òÄ󶡤¹¤ë¤Ë¤Ï¡¢¥¨¥ó¥Æ¥£¥Æ¥£ (¤¿¤È¤¨¤Ð³«È¯¥°¥ë¡¼¥×) ¤Ï¼ÂÁõ¥³¡¼¥É¤òºîÀ®¤·¡¢
Provider¥¯¥é¥¹¤Î¥µ¥Ö¥¯¥é¥¹¤òÀ¸À®¤·¤Þ¤¹¡£Provider¥µ¥Ö¥¯¥é¥¹¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Ï¡¢¥×¥í¥Ð¥¤¥À¤¬¼ÂÁõ¤·¤¿¥µ¡¼¥Ó¥¹¤ò¸¡º÷¤¹¤ë¤¿¤á¤Ë Java 2 SDK Security API ¤¬»ÈÍѤ¹¤ë³Æ¼ï¥×¥í¥Ñ¥Æ¥£¤ÎÃͤòÀßÄꤷ¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥µ¥Ö¥¯¥é¥¹¤Ï¡¢¥µ¡¼¥Ó¥¹¤ò¼ÂÁõ¤¹¤ë¥¯¥é¥¹Ì¾¤ò»ØÄꤷ¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À¥Ñ¥Ã¥±¡¼¥¸¤¬¼ÂÁõ¤Ç¤¤ë¥µ¡¼¥Ó¥¹¤Ë¤Ï¡¢¤µ¤Þ¤¶¤Þ¤Ê¼ïÎब¤¢¤ê¤Þ¤¹¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥¨¥ó¥¸¥ó¥¯¥é¥¹¤È¥¢¥ë¥´¥ê¥º¥à¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¼ÂÁõ¤¬°ã¤¦¤È¡¢ÆÃħ¤â°ã¤Ã¤Æ¤¯¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¥½¥Õ¥È¥¦¥§¥¢¥Ù¡¼¥¹¤Î¤â¤Î¤â¤¢¤ì¤Ð¡¢¥Ï¡¼¥É¥¦¥§¥¢¥Ù¡¼¥¹¤Î¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£¥×¥é¥Ã¥È¥Õ¥©¡¼¥àÆÈΩ¤Î¤â¤Î¤â¤¢¤ì¤Ð¡¢¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¸ÇͤΤâ¤Î¤â¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¥ì¥Ó¥å¡¼¤äɾ²ÁÍѤ˻Ȥ¨¤ë¥×¥í¥Ð¥¤¥À¥³¡¼¥É¤â¤¢¤ì¤Ð¡¢»È¤¨¤Ê¤¤¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£Java °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã (JCA) ¤Ç¤Ï¡¢¥¨¥ó¥É¥æ¡¼¥¶¤È³«È¯¼Ô¤ÎÁÐÊý¤¬ÆÈ¼«¤Î¥Ë¡¼¥º¤ò·èÄê¤Ç¤¤Þ¤¹¡£
¤³¤Î¹à¤Ç¤Ï¡¢¥¨¥ó¥É¥æ¡¼¥¶¤Î¤¿¤á¤Î°Å¹æ¼ÂÁõ¤Î¥¤¥ó¥¹¥È¡¼¥ëÊýË¡¤È¥Ë¡¼¥º¤Ø¤Î¹ç¤ï¤»Êý¡¢¤ª¤è¤Ó³«È¯¼Ô¤Î¤¿¤á¤ÎɬÍפʼÂÁõ¤ÎÍ×µáÊýË¡¤òÀâÌÀ¤·¤Þ¤¹¡£
Ãí: ¥×¥í¥Ð¥¤¥À¤Î¼ÂÁõ¤Î¾ÜºÙ¤Ï¡¢¡ÖJava °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ãÍÑ¥×¥í¥Ð¥¤¥À¤Î¼ÂÁõÊýË¡¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¥×¥í¥Ð¥¤¥À¼ÂÁõ¤ÎÍ׵ᤪ¤è¤Ó³ÍÆÀÊýË¡
¤³¤Î API ¤Î³Æ¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÆÃÄê¤Î¼ÂÁõ¤¬Í׵ᤵ¤ì¡¢¤½¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤ÎgetInstance¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¥¤¥ó¥¹¥¿¥ó¥¹¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤³¤Î¤È¤¤Ë¡¢´õ˾¤¹¤ë¥¢¥ë¥´¥ê¥º¥à¤Î̾Á°¤È¡¢¼ÂÁõ¤·¤¿¤¤¥×¥í¥Ð¥¤¥À (¤Þ¤¿¤ÏProvider¥¯¥é¥¹) ¤Î̾Á° (¥ª¥×¥·¥ç¥ó) ¤ò»ØÄꤷ¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¢
getInstance¤Ï¡¢»ØÄꤵ¤ì¤¿¥¢¥ë¥´¥ê¥º¥à¤Ë´ØÏ¢¤¹¤ë¡¢Í׵ᤵ¤ì¤¿°Å¹æ²½¥µ¡¼¥Ó¥¹¤Î¼ÂÁõ¤ËÂбþ¤¹¤ëÅÐÏ¿¥×¥í¥Ð¥¤¥À¤ò¸¡º÷¤·¤Þ¤¹¡£¤É¤Î Java ²¾ÁÛ¥Þ¥·¥ó (JVM) ¤Ç¤â¡¢¥×¥í¥Ð¥¤¥À¤Ï»ØÄê¤Î¡ÖÍ¥Àè½ç°Ì¡×¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£Í¥Àè½ç°Ì¤È¤Ï¡¢ÆÃÄê¥×¥í¥Ð¥¤¥À¤Î»ØÄ꤬¤Ê¤¤¾ì¹ç¤Ë¡¢¥×¥í¥Ð¥¤¥À¥ê¥¹¥È¤¬¸¡º÷¤µ¤ì¤ë½ç°Ì¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢JVM ¤Ë¡¢PROVIDER_1¤ÈPROVIDER_2¤È¤¤¤¦ 2 ¤Ä¤Î¥×¥í¥Ð¥¤¥À¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È²¾Äꤷ¤Þ¤¹¡£¤³¤³¤Ç¡¢3 ¤Ä¤Î¥·¥Ê¥ê¥ª¤Ë¤Ä¤¤¤Æ¸«¤Æ¤ß¤Þ¤¹¡£
PROVIDER_1¤Ï SHA1withDSA¡¢SHA-1¡¢MD5¡¢DES¡¢DES3 ¤ò¼ÂÁõ
PROVIDER_1¤ÎÍ¥Àè½ç°Ì¤¬ 1 (ºÇ¹â¤ÎÍ¥Àè½ç°Ì)
PROVIDER_2¤Ï SHA1withDSA¡¢MD5withRSA¡¢MD2withRSA¡¢MD2¡¢MD5¡¢RC4¡¢RC5¡¢DES¡¢RSA ¤ò¼ÂÁõPROVIDER_2¤ÎÍ¥Àè½ç°Ì¤Ï 2
- MD5 ¼ÂÁõ¤ò¸¡º÷¤¹¤ë¤È¤¹¤ë¡£¤É¤Á¤é¤Î¥×¥í¥Ð¥¤¥À¤â¤³¤Î¼ÂÁõ¤ò¶¡µë¤¹¤ë¡£
PROVIDER_1¤¬ºÇ¹â¤ÎÍ¥Àè½ç°Ì¤ò»ý¤ÁºÇ½é¤Ë¸¡º÷¤µ¤ì¤ë¤Î¤Ç¡¢PROVIDER_1¼ÂÁõ¤¬ÊÖ¤µ¤ì¤ë- MD5withRSA ½ð̾¥¢¥ë¥´¥ê¥º¥à¤ò¸¡º÷¤¹¤ë¾ì¹ç¡¢¤Þ¤ººÇ½é¤Ë
PROVIDER_1¤¬¸¡º÷¤µ¤ì¤ë¡£¼ÂÁõ¤¬¸«¤Ä¤«¤é¤Ê¤¤¤Î¤Ç¼¡¤ËPROVIDER_2¤¬¸¡º÷¤µ¤ì¤ë¡£¼ÂÁõ¤¬¸«¤Ä¤«¤ë¤Î¤Ç¡¢¤³¤Î¥×¥í¥Ð¥¤¥À¤¬ÊÖ¤µ¤ì¤ë- SHA1withRSA ½ð̾¥¢¥ë¥´¥ê¥º¥à¤ò¸¡º÷¤¹¤ë¾ì¹ç¤òÁÛÄꤹ¤ë¡£¤³¤ì¤ò¼ÂÁõ¤¹¤ë¥×¥í¥Ð¥¤¥À¤Ï¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢
NoSuchAlgorithmException¤¬¥¹¥í¡¼¤µ¤ì¤ë¥×¥í¥Ð¥¤¥À°ú¿ô¤ò»ý¤Ä
getInstance¥á¥½¥Ã¥É¤Ï¡¢É¬Íפʥ¢¥ë¥´¥ê¥º¥à¤òÄ󶡤¹¤ë¥×¥í¥Ð¥¤¥À¤ò»ØÄꤷ¤¿¤¤³«È¯¼Ô¤Î¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢Ï¢Ë®¾ÚÌÀ½ñ¤ò¼õ¤±¼è¤Ã¤¿¥×¥í¥Ð¥¤¥À¼ÂÁõ¤òϢˮ¶É¤¬»È¤¤¤¿¤¤¤È¤·¤Þ¤¹¡£PROVIDER_1¤Î SHA1withDSA ¼ÂÁõ¤Ï¤³¤Î¾ÚÌÀ½ñ¤ò¼õ¤±¼è¤Ã¤Æ¤¤¤Ê¤¤¤Î¤ËÂФ·¡¢PROVIDER_2¤Î DSA ¼ÂÁõ¤¬¤³¤ì¤ò¼õ¤±¼è¤Ã¤Æ¤¤¤ë¤È²¾Äꤷ¤Þ¤¹¡£Ï¢Ë®¶É¤Î¥×¥í¥°¥é¥à¤Ï°Ê²¼¤Î¸Æ¤Ó½Ð¤·¤ò¼Â¹Ô¤·¤Þ¤¹¡£
PROVIDER_2¤¬Ç§¾Ú¤µ¤ì¤¿¼ÂÁõ¤ò»ý¤Ä¤¿¤á¡¢¤³¤ì¤ò»ØÄꤷ¤Þ¤¹¡£Signature dsa = Signature.getInstance("SHA1withDSA", "PROVIDER_2");¤³¤Î¾ì¹ç¡¢
PROVIDER_2¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ëÊ̤Υץí¥Ð¥¤¥À¤¬Í׵ᥢ¥ë¥´¥ê¥º¥à¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â¡¢NoSuchProviderException¤¬¥¹¥í¡¼¤µ¤ì¤Þ¤¹¡£¥×¥í¥°¥é¥à¤Ï¡¢(
Security¥¯¥é¥¹¤ÎgetProviders¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ) ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¥×¥í¥Ð¥¤¥À¤Î°ìÍ÷¤ò³ÍÆÀ¤·¡¢°ìÍ÷¤«¤éÁªÂò¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À¤Î¥¤¥ó¥¹¥È¡¼¥ë
¥×¥í¥Ð¥¤¥À¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ï 2 ¤Ä¤ÎÉôʬ¤Ëʬ¤«¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥×¥í¥Ð¥¤¥À¥Ñ¥Ã¥±¡¼¥¸¥¯¥é¥¹¤Î¥¤¥ó¥¹¥È¡¼¥ë¤È¥×¥í¥Ð¥¤¥À¤Î¹½À®¤Ç¤¹¡£
¥×¥í¥Ð¥¤¥À¥¯¥é¥¹¤Î¥¤¥ó¥¹¥È¡¼¥ë
¥×¥í¥Ð¥¤¥À¥¯¥é¥¹¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ë¤Ï¡¢¼¡¤Î 2 ¤Ä¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£
- ¥¯¥é¥¹¤¬³ÊǼ¤µ¤ì¤Æ¤¤¤ë zip ¤Þ¤¿¤Ï JAR ¥Õ¥¡¥¤¥ë¤ò¡¢classpath ¤ÎǤ°Õ¤Î¾ì½ê¤ËÃÖ¤¯
- ¥×¥í¥Ð¥¤¥À JAR ¥Õ¥¡¥¤¥ë¤ò¡¢¡Ö¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¡×¤Þ¤¿¤Ï¡Ö¥Ð¥ó¥É¥ë¤µ¤ì¤¿¡×³ÈÄ¥µ¡Ç½¤È¤·¤Æ»ØÄꤹ¤ë¡£³ÈÄ¥µ¡Ç½¤ÎÇÛÃÖÊýË¡¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö³ÈÄ¥µ¡Ç½¤ÎÇÛÃ֡פò»²¾È
¥×¥í¥Ð¥¤¥À¤Î¹½À®
¼¡¤Î¼ê½ç¤Ç¤Ï¡¢Ç§²Ä¥×¥í¥Ð¥¤¥À¤Î¥ê¥¹¥È¤Ë¤³¤Î¥×¥í¥Ð¥¤¥À¤òÄɲä·¤Þ¤¹¡£¤³¤Î¼ê½ç¤Ï¡¢SDK ¤Î
lib/security¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ëjava.security¥Õ¥¡¥¤¥ë¤òÊÔ½¸¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆÀÅŪ¤Ë¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢SDK ¤¬j2sdk1.2¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤Ïj2sdk1.2/lib/security/java.security¤Ë¤Ê¤ê¤Þ¤¹¡£java.security¤ÇÀßÄê¤Ç¤¤ë¥×¥í¥Ñ¥Æ¥£¤ÎÎã¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£security.provider.n=masterClassName¤³¤ì¤Ï¥×¥í¥Ð¥¤¥À¤òÀë¸À¤·¡¢¤½¤ÎÍ¥Àè½ç°Ì n ¤ò»ØÄꤷ¤Þ¤¹¡£Í¥Àè½ç°Ì¤È¤Ï¡¢ÆÃÄê¥×¥í¥Ð¥¤¥À¤Î»ØÄ꤬¤Ê¤¤¾ì¹ç¤Ë¡¢Í׵ᤵ¤ì¤¿¥µ¡¼¥Ó¥¹¤Ë´Ø¤·¤Æ¸¡º÷¤µ¤ì¤ë¥×¥í¥Ð¥¤¥À¤Î½ç°Ì¤Ç¤¹¡£½ç°Ì¤Ï 1 ¤«¤é»Ï¤Þ¤ê¡¢1 ¤¬ºÇÍ¥Àè¤Ç¼¡¤Ë 2¡¢3 ... ¤È³¤¤Þ¤¹¡£
masterClassName¤Ë¤Ï¡¢¥×¥í¥Ð¥¤¥À¤Î¥Þ¥¹¥¿¡¼¥¯¥é¥¹¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À¤Î¥É¥¥å¥á¥ó¥È¤Ç¤½¤Î¥Þ¥¹¥¿¡¼¥¯¥é¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤Ï¡¢¾ï¤ËProvider¥¯¥é¥¹¤Î¥µ¥Ö¥¯¥é¥¹¤Ç¤¹¡£¥µ¥Ö¥¯¥é¥¹¥³¥ó¥¹¥È¥é¥¯¥¿¤Ï¡¢¥×¥í¥Ð¥¤¥À¤¬¼ÂÁõ¤·¤¿¥¢¥ë¥´¥ê¥º¥à¤ä¤½¤Î¾¤Îµ¡Ç½¤ò¸¡º÷¤¹¤ë¤¿¤á¤Ë Java °Å¹æ²½ API ¤ËɬÍפʳƼï¥×¥í¥Ñ¥Æ¥£¤ÎÃͤòÀßÄꤷ¤Þ¤¹¡£¥Þ¥¹¥¿¡¼¥¯¥é¥¹¤¬
COM.acme.provider.Acme¤Ç¡¢Í¥Àè½ç°Ì¤¬Âè 3 °Ì¤Î¥×¥í¥Ð¥¤¥À¤È¤·¤ÆAcme¤ò¹½À®¤·¤¿¤¤¤È¤·¤Þ¤¹¡£¤³¤Î¤¿¤á¤Ë¤Ï¡¢¼¡¤Î¹Ô¤òjava.security¥Õ¥¡¥¤¥ë¤ËÄɲä·¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À¤Ï¡¢Æ°Åª¤ËÅÐÏ¿¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤³¤Î¤¿¤á¤Ë¤Ï¡¢security.provider.3=COM.acme.provider.AcmeSecurity¥¯¥é¥¹¤ÎaddProvider¤Þ¤¿¤ÏinsertProviderAt¤Î¤É¤Á¤é¤«¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£¤³¤ÎÅÐÏ¿¤Ï¹±µ×Ū¤Ç¤Ï¤Ê¤¯¡¢¡Ö¿®Íê¤Ç¤¤ë¡×¥×¥í¥°¥é¥à¤Ç¤·¤«¼Â¹Ô¤Ç¤¤Þ¤»¤ó¡£Security ¥¯¥é¥¹¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
Provider¥¯¥é¥¹¤Î¥á¥½¥Ã¥É³Æ
Provider¥¯¥é¥¹¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¡¢Ì¾Á° (¸½»þÅÀ¤Ç¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤¹¤ë)¡¢¥Ð¡¼¥¸¥ç¥óÈֹ桢¤ª¤è¤Ó¥×¥í¥Ð¥¤¥À¤È¤½¤Î¥µ¡¼¥Ó¥¹¤Îʸ»úÎóµ½Ò¤ò»ý¤Á¤Þ¤¹¡£°Ê²¼¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢¤³¤ì¤é¤Î¾ðÊó¤Ë¤Ä¤¤¤ÆProvider¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò¾È²ñ¤Ç¤¤Þ¤¹¡£public String getName() public double getVersion() public String getInfo()
Security ¥¯¥é¥¹
Security¥¯¥é¥¹¤Ï¡¢¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¥×¥í¥Ð¥¤¥À¤ª¤è¤Ó¥»¥¥å¥ê¥Æ¥£¤Ë´Ø¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤ò´ÉÍý¤·¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤Ë´Þ¤Þ¤ì¤ë¤Î¤Ï¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤¬À¸À®¤µ¤ì¤Ê¤¤ static ¥á¥½¥Ã¥É¤À¤±¤Ç¤¹¡£ ¥×¥í¥Ð¥¤¥À¤ÎÄɲäޤ¿¤Ïºï½ü¡¢¤ª¤è¤ÓSecurity¥×¥í¥Ñ¥Æ¥£¤ÎÀßÄêÍѥ᥽¥Ã¥É¤Ï¡¢¿®Íê¤Ç¤¤ë¥×¥í¥°¥é¥à¤Ë¤è¤Ã¤Æ¤·¤«¼Â¹Ô¤Ç¤¤Þ¤»¤ó¡£¸½»þÅÀ¤Ç¤Î¡Ö¿®Íê¤Ç¤¤ë¥×¥í¥°¥é¥à¡×¤Ï¡¢°Ê²¼¤Î¤É¤ì¤«¤Ç¤¹¡£¤¢¤ë¥³¡¼¥É¤¬¡¢¼Â¹Ô¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¥¢¥¯¥·¥ç¥ó (¥×¥í¥Ð¥¤¥À¤ÎÄɲäʤÉ) ¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ê¡¢¿®Íê¤Ç¤¤ë¥³¡¼¥É¤Ç¤¢¤ë¤ÈȽÃǤ¹¤ë¤Ë¤Ï¡¢¤½¤Î¥¢¥¯¥·¥ç¥ó¤ò¹Ô¤¦¸¢¸Â¤¬¤½¤Î¥¢¥×¥ì¥Ã¥È¤ËÍ¿¤¨¤é¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
- ¥»¥¥å¥ê¥Æ¥£¥Þ¥Í¡¼¥¸¥ã¤Î²¼¤Çưºî¤·¤Æ¤¤¤Ê¤¤¥í¡¼¥«¥ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó
- »ØÄꤵ¤ì¤¿¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¸¢¸Â¤Î¤¢¤ë¥¢¥×¥ì¥Ã¥È¤Þ¤¿¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó (°Ê²¼¤ò»²¾È)
¤¿¤È¤¨¤Ð¡¢Policy ¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¼ÂÁõ¤Ç¤Ï¡¢SDK ¥¤¥ó¥¹¥È¡¼¥ë¤Î¥Ý¥ê¥·¡¼¹½À®¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢»ØÄꤵ¤ì¤¿¥³¡¼¥É¥½¡¼¥¹¤Î¥³¡¼¥É¤Ë¤è¤êµö²Ä¤µ¤ì¤¿¸¢¸Â (¥·¥¹¥Æ¥à¥ê¥½¡¼¥¹¤Ø¤Î¥¢¥¯¥»¥¹¤Î¼ïÎà) ¤ò»ØÄꤷ¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢°Ê¹ß¤ÎÀâÌÀ¤ª¤è¤Ó¡Ö¥Ç¥Õ¥©¥ë¥È¤Î Policy ¤Î¼ÂÁõ¤È¥Ý¥ê¥·¡¼¥Õ¥¡¥¤¥ë¤Î¹½Ê¸¡×¤È¡ÖJava ¥»¥¥å¥ê¥Æ¥£¥¢¡¼¥¥Æ¥¯¥Á¥ã¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¼Â¹Ô¤µ¤ì¤ë¥³¡¼¥É¤Ï¡¢¾ï¤Ë¡¢ÆÃÄê¤Î¡Ö¥³¡¼¥É¥½¡¼¥¹¡×¤«¤éÍè¤ë¤È¹Í¤¨¤é¤ì¤Þ¤¹¡£¥³¡¼¥É¥½¡¼¥¹¤Ë¤Ï¡¢¤½¤Î¥¢¥×¥ì¥Ã¥È¤Î¸µ¤Î¾ì½ê (URL) ¤À¤±¤Ç¤Ê¤¯¡¢¥³¡¼¥É¤Î½ð̾¤Ë»È¤ï¤ì¤¿Èó¸ø³«¸°¤ËÂбþ¤¹¤ë¸ø³«¸°¤Ø¤Î»²¾È¤â´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¥³¡¼¥É¥½¡¼¥¹Æâ¤Î¸ø³«¸°¤Ï¡¢¥æ¡¼¥¶¤Î¥¡¼¥¹¥È¥¢¤ÎÊÌ̾ (µ¹æÌ¾) ¤Ç»²¾È¤·¤Þ¤¹¡£
¥Ý¥ê¥·¡¼¹½À®¥Õ¥¡¥¤¥ëÆâ¤Ç¤Ï¡¢¥³¡¼¥É¥½¡¼¥¹¤Ï¡¢¥³¡¼¥É¥Ù¡¼¥¹ (URL)¡¢¤ª¤è¤Ó (
signedBy¤Ç»Ï¤Þ¤ë) ÊÌ̾¤Î 2 ¤Ä¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Çɽ¤µ¤ì¤Þ¤¹¡£ÊÌ̾¤Ï¡¢¥³¡¼¥É¤Î½ð̾¤Î¸¡¾Ú¤Ë»È¤¦É¬ÍפΤ¢¤ë¸ø³«¸°¤ò´Þ¤ó¤À¥¡¼¥¹¥È¥¢¤Î¥¨¥ó¥È¥ê¤ò¼±Ê̤·¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ëÆâ¤Î³Æ¡Öµö²Ä¡×ʸ¤Ï¡¢»ØÄꤵ¤ì¤¿¥³¡¼¥É¥½¡¼¥¹¤Ë¥¢¥¯¥»¥¹¸¢¤Î¥»¥Ã¥È¤òÍ¿¤¨¡¢µö²Ä¤µ¤ì¤¿½èÍý¤ò»ØÄꤷ¤Þ¤¹¡£
¼¡¤Ë¡¢¥Ý¥ê¥·¡¼¹½À®¥Õ¥¡¥¤¥ë¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£
¤³¤Î¹½À®¥Õ¥¡¥¤¥ë¤Ï¡¢¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¾å¤Îgrant codeBase "file:/home/sysadmin/", signedBy "sysadmin" { permission java.security.SecurityPermission "insertProvider.*"; permission java.security.SecurityPermission "removeProvider.*"; permission java.security.SecurityPermission "putProviderProperty.*"; };/home/sysadmin/¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î½ð̾¤µ¤ì¤¿ JAR ¥Õ¥¡¥¤¥ë¤«¤é¥í¡¼¥É¤µ¤ì¤¿¥³¡¼¥É¤À¤±¤¬¡¢¥×¥í¥Ð¥¤¥À¤ÎÄɲäޤ¿¤Ïºï½ü¡¢¤¢¤ë¤¤¤Ï¥×¥í¥Ð¥¤¥À¤Î¥×¥í¥Ñ¥Æ¥£¤ÎÀßÄ꤬¤Ç¤¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£JAR ¥Õ¥¡¥¤¥ë¤Î½ð̾¤Ï¡¢¥æ¡¼¥¶¤Î¥¡¼¥¹¥È¥¢Æâ¤ÎÊÌ̾sysadmin¤Ç»²¾È¤¹¤ë¸ø³«¸°¤ò»È¤Ã¤Æ¸¡¾Ú¤Ç¤¤Þ¤¹¡£¥³¡¼¥É¥½¡¼¥¹¤ò»ØÄꤹ¤ëÍ×ÁǤϡ¢¤É¤Á¤é¤â (¤Þ¤¿¤ÏξÊý¤ò) ¾Êά²Äǽ¤Ç¤¹¡£¼¡¤Ë¡¢
codeBase¤ò¾Êά¤·¤¿¹½À®¥Õ¥¡¥¤¥ë¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£¤³¤Î¥Ý¥ê¥·¡¼¤¬»Ü¹Ô¤µ¤ì¤¿¾ì¹ç¡¢grant signedBy "sysadmin" { permission java.security.SecurityPermission "insertProvider.*"; permission java.security.SecurityPermission "removeProvider.*"; };sysadmin¤Ë¤è¤Ã¤Æ½ð̾¤µ¤ì¤¿ JAR ¥Õ¥¡¥¤¥ë¤Î¥³¡¼¥É¤Ë¤è¤ë¥×¥í¥Ð¥¤¥À¤ÎÄɲäޤ¿¤Ïºï½ü¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£JAR ¥Õ¥¡¥¤¥ë¤Î¾ì½ê¤Ï´Ø·¸¤¢¤ê¤Þ¤»¤ó¡£¼¡¤Ë¡¢½ð̾¼Ô¤ò¾Êά¤·¤¿Îã¤ò¼¨¤·¤Þ¤¹¡£
¤³¤Î¾ì¹ç¡¢¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Îgrant codeBase "file:/home/sysadmin/" { permission java.security.SecurityPermission "insertProvider.*"; permission java.security.SecurityPermission "removeProvider.*"; };/home/sysadmin/¥Ç¥£¥ì¥¯¥È¥êÆâ¤ËÃÖ¤«¤ì¤¿¥³¡¼¥É¤Ï¡¢¥×¥í¥Ð¥¤¥À¤ÎÄɲäȺï½ü¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥³¡¼¥É¤Ë½ð̾¤ÏɬÍפ¢¤ê¤Þ¤»¤ó¡£
codeBase¤ÈsignedBy¤òξÊý¤È¤â¾Êά¤·¤¿Îã¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£¤³¤ÎÎã¤Ç¤Ï¡¢¥³¡¼¥É¥½¡¼¥¹¤ò»ØÄꤹ¤ëÍ×ÁǤ¬¤É¤Á¤é¤â¾Êά¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢½Ð½ê¤¬¤É¤³¤«¡¢½ð̾¤¬ÉÕ¤¤¤Æ¤¤¤ë¤«¡¢Ã¯¤Î½ð̾¤¬ÉÕ¤¤¤Æ¤¤¤ë¤«¤Ë´Ø·¸¤Ê¤¯¡¢¤É¤Î¥³¡¼¥É¤Ç¤â¥×¥í¥Ð¥¤¥À¤ÎÄɲäȺï½ü¤¬¹Ô¤¨¤Þ¤¹¡£grant { permission java.security.SecurityPermission "insertProvider.*"; permission java.security.SecurityPermission "removeProvider.*"; };¥×¥í¥Ð¥¤¥À¤Î´ÉÍý
¼¡¤Îɽ¤Ë¡¢
Security¥¯¥é¥¹Æâ¤Î¥á¥½¥Ã¥É¤Î¤¦¤Á¡¢¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¥×¥í¥Ð¥¤¥À¤ò¾È²ñ¤¹¤ë¤¿¤á¤Ë»ÈÍѤǤ¤ë¥á¥½¥Ã¥É¤È¡¢¼Â¹Ô»þ¤Ë¥×¥í¥Ð¥¤¥À¤ò¥¤¥ó¥¹¥È¡¼¥ë¤Þ¤¿¤Ïºï½ü¤¹¤ë¤¿¤á¤Î¥á¥½¥Ã¥É¤ÎÍ×Ìó¤ò¼¨¤·¤Þ¤¹¡£
¥×¥í¥Ð¥¤¥À¤Î¾È²ñ ¥á¥½¥Ã¥É ÀâÌÀ static Provider[] getProviders()¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥×¥í¥Ð¥¤¥À¤ò´Þ¤àÇÛÎó (¤Ä¤Þ¤ê¡¢³Æ¥Ñ¥Ã¥±¡¼¥¸¥×¥í¥Ð¥¤¥À¤Î Provider¥µ¥Ö¥¯¥é¥¹) ¤òÊÖ¤¹¡£ÇÛÎóÆâ¤Î¥×¥í¥Ð¥¤¥À¤Î½ç½ø¤Ï¡¢Í¥Àè½ç°Ì¤Ë½¾¤¦static Provider getProvider
(String providerName)¤³¤Î¥á¥½¥Ã¥É¤Ï¡¢ providerName¤È¤¤¤¦Ì¾Á°¤Î¥×¥í¥Ð¥¤¥À¤òÊÖ¤¹¡£¤³¤Î¥×¥í¥Ð¥¤¥À¤¬¸«¤Ä¤«¤é¤Ê¤¤¤Ènull¤òÊÖ¤¹
¥×¥í¥Ð¥¤¥À¤ÎÄɲà ¥á¥½¥Ã¥É ÀâÌÀ static int
addProvider(Provider provider)¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¥×¥í¥Ð¥¤¥À°ìÍ÷¤ÎËöÈø¤Ë¥×¥í¥Ð¥¤¥À¤òÄɲ乤롣¥×¥í¥Ð¥¤¥À¤¬Äɲ䵤줿ͥÀè½ç°Ì¤òÊÖ¤¹¤«¡¢¤¹¤Ç¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤¿¤á¤Ë¥×¥í¥Ð¥¤¥À¤¬Äɲ䵤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï -1¤òÊÖ¤¹static int insertProviderAt
(Provider provider, int position)»ØÄꤵ¤ì¤¿°ÌÃ֤˿·µ¬¤Î¥×¥í¥Ð¥¤¥À¤òÄɲ乤롣¤¢¤ë¥×¥í¥Ð¥¤¥À¤¬Í׵ᤵ¤ì¤¿¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¤½¤ì¤Þ¤Ç¤½¤Î¾ì½ê¤Ë¤¢¤Ã¤¿¥×¥í¥Ð¥¤¥À¡¢¤ª¤è¤Ó
position¤è¤ê¤¢¤È¤Î°ÌÃ֤Τ¹¤Ù¤Æ¤Î¥×¥í¥Ð¥¤¥À¤Î½ç°Ì¤Ï¡¢1 ¤Ä¤¢¤È¤Ë¤Ê¤ê¡¢°ìÍ÷¤ÎºÇ¸åÈø¤Ë¸þ¤«¤Ã¤Æ 1 ¤Ä°Üư¤¹¤ë¡£¤³¤Î¥á¥½¥Ã¥É¤Ï¡¢¥×¥í¥Ð¥¤¥À¤¬Äɲ䵤줿ͥÀè½ç°Ì¤òÊÖ¤¹¤«¡¢¤¹¤Ç¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤¿¤á¤Ë¥×¥í¥Ð¥¤¥À ¤¬Äɲ䵤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï-1¤òÊÖ¤¹
¥×¥í¥Ð¥¤¥À¤Îºï½ü ¥á¥½¥Ã¥É ÀâÌÀ static void removeProvider(String name)»ØÄꤷ¤¿Ì¾Á°¤Î¥×¥í¥Ð¥¤¥À¤òºï½ü¤¹¤ë¡£¥×¥í¥Ð¥¤¥À¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢²¿¤â¤»¤ºÉüµ¢¤¹¤ë¡£»ØÄꤵ¤ì¤¿¥×¥í¥Ð¥¤¥À¤¬ºï½ü¤µ¤ì¤ë¤È¡¢¤½¤Î¥×¥í¥Ð¥¤¥À¤è¤ê¤â¤¢¤È¤Î°ÌÃ֤ˤ¢¤ë¤¹¤Ù¤Æ¤Î¥×¥í¥Ð¥¤¥À¤Î°ÌÃÖ¤¬ 1 ¤ÄÁ°¤Ë¤Ê¤ê¡¢¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¥×¥í¥Ð¥¤¥À°ìÍ÷¤ÎÀèÆ¬¤Ë¸þ¤«¤Ã¤Æ 1 ¤Ä°Üư¤¹¤ë
Ãí: ¥×¥í¥Ð¥¤¥À¤ÎÍ¥Àè½ç°Ì¤òÊѹ¹¤¹¤ë¾ì¹ç¤Ï¡¢¤Þ¤ºÌÜŪ¤Î¥×¥í¥Ð¥¤¥À¤òºï½ü¤·¤Æ¤«¤é¡¢´õ˾¤¹¤ëÍ¥Àè½ç°Ì¤Î°ÌÃÖ¤ËÁÞÆþ¤·Ä¾¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¥»¥¥å¥ê¥Æ¥£¤Î¥×¥í¥Ñ¥Æ¥£
Security¥¯¥é¥¹¤Ï¡¢¥·¥¹¥Æ¥à¤Ë´Ø¤¹¤ë¥»¥¥å¥ê¥Æ¥£¤Î¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤òÊÝ»ý¤·¤Þ¤¹¡£¤³¤ì¤é¤Î¥×¥í¥Ñ¥Æ¥£¤Ï¡¢°Ê²¼¤Î¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¡¢¿®Íê¤Ç¤¤ë¥×¥í¥°¥é¥à¤«¤é¥¢¥¯¥»¥¹¤·¤ÆÀßÄê¤Ç¤¤Þ¤¹¡£static String getProperty(String key) static void setProperty(String key, String datum)
MessageDigest ¥¯¥é¥¹
MessageDigest¥¯¥é¥¹¤Ï¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ç¡¢°ÂÁ´¤Ê°Å¹æ²½¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È (SHA-1 ¤ä MD5 ¤Ê¤É) ¤Îµ¡Ç½¤òÄ󶡤¹¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£°ÂÁ´¤Ê°Å¹æ²½¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¤Ï¡¢Ç¤°Õ¥µ¥¤¥º¤ÎÆþÎÏ (¥Ð¥¤¥ÈÇÛÎó) ¤ò¼è¤ê¡¢¸ÇÄꥵ¥¤¥º½ÐÎϤòÀ¸À®¤·¤Þ¤¹¡£¤³¤ì¤ò¡Ö¥À¥¤¥¸¥§¥¹¥È¡×¤Þ¤¿¤Ï¡Ö¥Ï¥Ã¥·¥å¡×¤È¸À¤¤¤Þ¤¹¡£¥À¥¤¥¸¥§¥¹¥È¤Ë¤Ï¼¡¤Î 2 ¤Ä¤ÎÆÃħ¤¬¤¢¤ê¤Þ¤¹¡£
- ·×»»¤Ë¤è¤Ã¤Æ¡¢Æ±¤¸Ãͤ˥ϥ工夵¤ì¤¿ 2 ¤Ä¤Î¥á¥Ã¥»¡¼¥¸¤ò¸¡º÷¤Ç¤¤Ê¤¤
- ¥À¥¤¥¸¥§¥¹¥È¤ÎÀ¸À®¤Ë»È¤Ã¤¿ÆþÎϾðÊó¤òÌÀ¤é¤«¤Ë¤·¤Ê¤¤
¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¤ò»È¤¤¡¢°ì°Õ¤Ç¡¢¿®Íê¤Ç¤¤ë¥Ç¡¼¥¿¼±Ê̻ҤòÀ¸À®¤·¤Þ¤¹¡£¥Ç¡¼¥¿¼±Ê̻Ҥò¥Ç¡¼¥¿¤Î¡Ö¥Ç¥¸¥¿¥ë»ØÌæ¡×¤È¸Æ¤Ö¤³¤È¤â¤¢¤ê¤Þ¤¹¡£
MessageDigest¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¥À¥¤¥¸¥§¥¹¥È·×»»¤Ç¤Ï¡¢¤Þ¤ººÇ½é¤Ë¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤·¤Þ¤¹¡£¤É¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Î¾ì¹ç¤âƱÍͤˡ¢
MessageDigest¥¯¥é¥¹¤Î static ¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥ÉgetInstance¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢ÆÃÄê·¿¤Î¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¥¢¥ë¥´¥ê¥º¥à¤ÎMessageDigest¥ª¥Ö¥¸¥§¥¯¥È¤ò³ÍÆÀ¤·¤Þ¤¹¡£static MessageDigest getInstance(String algorithm)
Ãí: ¥¢¥ë¥´¥ê¥º¥à̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¸Æ¤Ó½Ð¤·¤Ï¤¹¤Ù¤ÆÅù²Á¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£MessageDigest.getInstance("SHA-1") MessageDigest.getInstance("sha-1") MessageDigest.getInstance("sHa-1")
¸Æ¤Ó½Ð¤·Â¦¤Ï¡¢Ç¤°Õ¤Ç¥×¥í¥Ð¥¤¥À¤Þ¤¿¤Ï
Provider¥¤¥ó¥¹¥¿¥ó¥¹¤Î̾Á°¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À̾¤ò»ØÄꤹ¤ë¤È¡¢Í׵᤹¤ë¥¢¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ¤ò³Î¼Â¤Ë»ØÄê¥×¥í¥Ð¥¤¥À¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£
static MessageDigest getInstance(String algorithm, String provider) static MessageDigest getInstance(String algorithm, Provider provider)
getInstance¤ò¸Æ¤Ó½Ð¤¹¤È¡¢½é´ü²½¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¥ª¥Ö¥¸¥§¥¯¥È¤¬ÊÖ¤ê¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î¤¢¤È¤Ç½é´ü²½¤ò¹Ô¤¦É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡£¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥Ã¥×¥Ç¡¼¥È
¥Ç¡¼¥¿¤Î¥À¥¤¥¸¥§¥¹¥È¤ò·×»»¤¹¤ë¤¿¤á¤Î¼¡¤Î¼ê½ç¤Ï¡¢½é´ü²½¤·¤¿¥á¥Ã¥»¡¼¥¸¥À¥¤¥¸¥§¥¹¥È¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥Ç¡¼¥¿¤òÆþ¤ì¤ë¤³¤È¤Ç¤¹¡£¤³¤ì¤Ï¡¢¼¡¤Î¤¤¤º¤ì¤«¤Î
update¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤Ã¤Æ¼Â¹Ô¤·¤Þ¤¹¡£
void update(byte input) void update(byte[] input) void update(byte[] input, int offset, int len)¥À¥¤¥¸¥§¥¹¥È¤Î·×»»
update¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¥Ç¡¼¥¿¤òÆþ¤ì¤¿¤¢¤È¤Ç¡¢¼¡¤Îdigest¥á¥½¥Ã¥É¤Î¤¦¤Á¤Î¤É¤ì¤« 1 ¤Ä¤ò»È¤Ã¤Æ¥À¥¤¥¸¥§¥¹¥È¤ò·×»»¤·¤Þ¤¹¡£
byte[] digest() byte[] digest(byte[] input) int digest(byte[] buf, int offset, int len)ºÇ½é¤Î 2 ¤Ä¤Î¥á¥½¥Ã¥É¤Ï¡¢·×»»¤µ¤ì¤¿¥À¥¤¥¸¥§¥¹¥È¤òÊÖ¤·¤Þ¤¹¡£ºÇ¸å¤Î¥á¥½¥Ã¥É¤Ï¡¢¥ª¥Õ¥»¥Ã¥È°ÌÃÖ
offset¤«¤é³«»Ï¤¹¤ëÄ󶡥Хåե¡bufÆâ¤Ë»»½Ð¥À¥¤¥¸¥§¥¹¥È¤ò³ÊǼ¤·¤Þ¤¹¡£len¤Ï¡¢¥À¥¤¥¸¥§¥¹¥È¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿bufÆâ¤Î¥Ð¥¤¥È¿ô¤Ç¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Ï¡¢¼ÂºÝ¤ËbufÆâ¤Ë³ÊǼ¤µ¤ì¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤·¤Þ¤¹¡£ÆþÎϥХ¤¥È¤ÎÇÛÎó¤ò°ú¿ô¤Ë¼è¤ë
digest¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢°Ê²¼¤Î¸Æ¤Ó½Ð¤·¤ÈÅù²Á¤Ç¤¹¡£ÆþÎϤò»ØÄꤷ¡¢¤½¤Î¤¢¤È¤Ë°ú¿ô¤ò»ý¤¿¤Ê¤¤void update(byte[] input)digest¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤¬Â³¤¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢Îã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
Signature ¥¯¥é¥¹Signature¥¯¥é¥¹¤Ï¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ç¡¢DSA ¤ä MD5 ¤ò»È¤¦ RSA ¤Ê¤É¤Î°Å¹æ²½¥Ç¥¸¥¿¥ë½ð̾µ¡Ç½¤òÄ󶡤¹¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£°ÂÁ´¤Ê°Å¹æ²½½ð̾¥¢¥ë¥´¥ê¥º¥à¤Ï¡¢Ç¤°Õ¥µ¥¤¥º¤ÎÆþÎϤÈÈó¸ø³«¸°¤ò¼è¤ê¡¢¡Ö½ð̾¡×¤È¸Æ¤Ð¤ì¤ëÈæ³ÓŪû¤¤ (¸ÇÄꥵ¥¤¥º¤Î¾ì¹ç¤â¤è¤¯¤¢¤ë) ¥Ð¥¤¥Èʸ»úÎó¤òÀ¸À®¤·¤Þ¤¹¡£¤³¤Î¥×¥í¥Ñ¥Æ¥£¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£
- ½ð̾¤ÎÀ¸À®¤Ë»È¤¦Èó¸ø³«¸°¤ËÂбþ¤¹¤ë¸ø³«¸°¤¬Í¿¤¨¤é¤ì¤ë¡£¤³¤ì¤ÏÆþÎϤÎǧ¾ÚÀ¤ª¤è¤ÓÀ°¹çÀ¤ò¸¡¾Ú¤Ç¤¤ë
- ½ð̾¤ª¤è¤Ó¸ø³«¸°¤Ï¡¢Èó¸ø³«¸°¤Ë´Ø¤¹¤ë¾ðÊó¤òÌÀ¤é¤«¤Ë¤Ï¤·¤Ê¤¤
Signature¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤Ã¤Æ¡¢¥Ç¡¼¥¿¤Ë½ð̾¤òÉÕ¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤Þ¤¿¡¢»ØÄê¤Î½ð̾¤¬¡¢´ØÏ¢¥Ç¡¼¥¿¤Î¼ÂºÝ¤Îǧ¾Ú½ð̾¤«¤É¤¦¤«¤ò¸¡¾Ú¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ ¥Ç¡¼¥¿¤Î½ð̾¤ª¤è¤Ó¸¡¾Ú¤ÎÎã¤Ï¡¢Îã¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
Signature¥ª¥Ö¥¸¥§¥¯¥È¤Î¾õÂÖSignature¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥â¥Ç¥ë¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢Signature¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¾ï¤Ë»ØÄê¤Î¾õÂ֤ˤ¢¤ê¡¢¤³¤Î¾õÂÖ¤Ç 1 ¤Ä¤Î·¿¤ÎÁàºî¤À¤±¤ò¼Â¹Ô¤Ç¤¤Þ¤¹¡£¾õÂ֤ϡ¢¸Ä¡¹¤Î¥¯¥é¥¹¤ÇÄêµÁ¤·¤¿ final (¥Õ¥¡¥¤¥Ê¥ë) À°¿ô¤ÎÄê¿ô¤Çɽ¤µ¤ì¤Þ¤¹¡£
Signature¥ª¥Ö¥¸¥§¥¯¥È¤Ë²Äǽ¤Ê¾õÂ֤ϡ¢¼¡¤Î 3 ¤Ä¤Ç¤¹¡£
UNINITIALIZEDSIGNVERIFYSignature¥ª¥Ö¥¸¥§¥¯¥È¤¬½é¤á¤ÆÀ¸À®¤µ¤ì¤ë¤È¤¤Ï¡¢UNINITIALIZED¤Î¾õÂ֤Ǥ¹¡£Signature¥¯¥é¥¹¤Ï¡¢¾õÂÖ¤òSIGN¤ËÊѹ¹¤¹¤ëinitSign¤È¡¢¾õÂÖ¤òVERIFY¤ËÊѹ¹¤¹¤ëinitVerify¤Î 2 ¤Ä¤Î½é´ü²½¥á¥½¥Ã¥É¤òÄêµÁ¤·¤Þ¤¹¡£
Signature¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®½ð̾¤òÉÕ¤±¤¿¤ê¡¢¸¡¾Ú¤·¤¿¤ê¤¹¤ë¤Ë¤Ï¡¢ºÇ½é¤ËSignature¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤·¤Þ¤¹¡£¤É¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Î¾ì¹ç¤âƱÍͤˡ¢Signature¥¯¥é¥¹¤Î static ¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥ÉgetInstance¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢ÆÃÄê·¿¤Î¥á¥Ã¥»¡¼¥¸½ð̾¥¢¥ë¥´¥ê¥º¥à¤ÎSignature¥ª¥Ö¥¸¥§¥¯¥È¤ò³ÍÆÀ¤·¤Þ¤¹¡£static Signature getInstance(String algorithm)¸Æ¤Ó½Ð¤·Â¦¤Ï¡¢Ç¤°Õ¤Ç¥×¥í¥Ð¥¤¥À¤Þ¤¿¤Ï
Ãí: ¥¢¥ë¥´¥ê¥º¥à̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£
Provider¥¯¥é¥¹¤Î̾Á°¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À̾¤ò»ØÄꤹ¤ë¤È¡¢Í׵᤹¤ë¥¢¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ¤ò³Î¼Â¤Ë»ØÄê¥×¥í¥Ð¥¤¥À¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£
static Signature getInstance(String algorithm, String provider) static Signature getInstance(String algorithm, Provider provider)
Signature¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½
Signature¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¦¤Ë¤Ï¡¢ºÇ½é¤Ëɬ¤º¤³¤ì¤ò½é´ü²½¤·¤Þ¤¹¡£½é´ü²½¥á¥½¥Ã¥É¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò½ð̾ÍѤ˻Ȥ¦¤«¸¡¾ÚÍѤ˻Ȥ¦¤«¤Ë±þ¤¸¤Æ°Û¤Ê¤ê¤Þ¤¹¡£½ð̾¤Ç»È¤¦¾ì¹ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÏºÇ½é¤Ë¡¢½ð̾¤òÀ¸À®¤¹¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤ÎÈó¸ø³«¸°¤ò»È¤Ã¤Æ½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î½é´ü²½¤Ï¡¢°Ê²¼¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¼Â¹Ô¤·¤Þ¤¹¡£
¤³¤Î¥á¥½¥Ã¥É¤Ç¤Ï¡¢final void initSign(PrivateKey privateKey)Signature¥ª¥Ö¥¸¥§¥¯¥È¤ÏSIGN¾õÂ֤ˤʤê¤Þ¤¹¡£
Signature¥ª¥Ö¥¸¥§¥¯¥È¤ò¸¡¾Ú¤Ç»È¤¦¾ì¹ç¤Ï¡¢¤Þ¤ººÇ½é¤Ë¡¢½ð̾¤ò¸¡¾Ú¤¹¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤Î¸ø³«¸°¤ò»È¤Ã¤Æ½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î½é´ü²½¤Ï¡¢°Ê²¼¤Î¤¤¤º¤ì¤«¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¼Â¹Ô¤·¤Þ¤¹¡£
final void initVerify(PublicKey publicKey) final void initVerify(Certificate certificate)¤³¤Î¥á¥½¥Ã¥É¤Ç¤Ï¡¢
Signature¥ª¥Ö¥¸¥§¥¯¥È¤ÏVERIFY¾õÂ֤ˤʤê¤Þ¤¹¡£½ð̾
Signature¥ª¥Ö¥¸¥§¥¯¥È¤ò½ð̾ÍѤ˽é´ü²½¤·¤¿¾ì¹ç (¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬SIGN¾õÂ֤ξì¹ç)¡¢½ð̾¤òÉÕ¤±¤ë¥Ç¡¼¥¿¤ò¥ª¥Ö¥¸¥§¥¯¥È¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ï¡¢°Ê²¼¤Îupdate¥á¥½¥Ã¥É¤Î¤É¤ì¤« 1 ¤Ä¤ò 1 ²ó¤Þ¤¿¤ÏÊ£¿ô²ó¸Æ¤Ó½Ð¤·¤Æ¼Â¹Ô¤·¤Þ¤¹¡£
final void update(byte b) final void update(byte[] data) final void update(byte[] data, int off, int len)½ð̾¤òÉÕ¤±¤ë¥Ç¡¼¥¿¤¬¤¹¤Ù¤Æ
Signature¥ª¥Ö¥¸¥§¥¯¥È¤ËÆþ¤ë¤Þ¤Ç¡¢update¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£½ð̾¤òÀ¸À®¤¹¤ë¤Ë¤Ï¡¢
sign¥á¥½¥Ã¥É¤Î 1 ¤Ä¤ò¸Æ¤Ó½Ð¤¹¤À¤±¤Ç¤¹¡£final byte[] sign() final int sign(byte[] outbuf, int offset, int len)ºÇ½é¤Î¥á¥½¥Ã¥É¤Ï¡¢½ð̾¤Î·ë²Ì¤ò¥Ð¥¤¥ÈÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£2 ÈÖÌܤΥ᥽¥Ã¥É¤Ï¡¢¥ª¥Õ¥»¥Ã¥È°ÌÃÖ offset ¤«¤é³«»Ï¤¹¤ëÄ󶡥Хåե¡ outbuf Æâ¤Ë½ð̾¤Î·ë²Ì¤ò³ÊǼ¤·¤Þ¤¹¡£len ¤Ï¡¢½ð̾¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿ outbuf Æâ¤Î¥Ð¥¤¥È¿ô¤Ç¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Ï¡¢¼ÂºÝ¤Ë³ÊǼ¤µ¤ì¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤·¤Þ¤¹¡£
½ð̾¤ÎÉ乿²½¤Ï¡¢¥¢¥ë¥´¥ê¥º¥à¤Ë°Í¸¤·¤Þ¤¹¡£Java °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ç¤Î ASN.1 É乿²½¤Î»ÈÍÑÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖÉÕÏ¿ B¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
sign¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤È¡¢signature (½ð̾) ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢initSign¤ò¸Æ¤Ó½Ð¤·¤ÆºÇ½é¤Ë½ð̾ÍѤ˽é´ü²½¤µ¤ì¤¿¤È¤¤Î¾õÂ֤˥ꥻ¥Ã¥È¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò¥ê¥»¥Ã¥È¤¹¤ë¤Î¤Ç¡¢É¬ÍפǤ¢¤ì¤Ðupdate¤Èsign¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢Æ±¤¸Èó¸ø³«¸°¤ò»È¤Ã¤ÆÊ̤νð̾¤òÀ¸À®¤Ç¤¤Þ¤¹¡£¤¢¤ë¤¤¤Ï°Û¤Ê¤ëÈó¸ø³«¸°¤ò»ØÄꤷ¡¢
initSign¤Ø¤Î¿·µ¬¸Æ¤Ó½Ð¤·¤òºîÀ®¤·¤¿¤ê¡¢(½ð̾¤ò¸¡¾Ú¤¹¤ë¤¿¤á¤ËSignature¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ëÌÜŪ¤Ç)initVerify¤Ø¤Î¿·µ¬¸Æ¤Ó½Ð¤·¤òºîÀ®¤·¤¿¤ê¤Ç¤¤Þ¤¹¡£¸¡¾Ú
Signature¥ª¥Ö¥¸¥§¥¯¥È¤ò¸¡¾ÚÍѤ˽é´ü²½¤·¤¿¾ì¹ç (VERIFY¾õÂ֤ˤ¢¤ë¾ì¹ç) ¤Ï¡¢»ØÄê¤Î½ð̾¤¬¡¢¤½¤ì¤Ë´ØÏ¢¤·¤¿¥Ç¡¼¥¿¤Î¼ÂºÝ¤Îǧ¾Ú½ð̾¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò¸¡¾Ú¤Ç¤¤Þ¤¹¡£¤³¤Î½èÍý¤ò³«»Ï¤¹¤ë¤Ë¤Ï¡¢¸¡¾Ú¥Ç¡¼¥¿ (½ð̾¼«ÂΤǤϤʤ¤) ¤ò¥ª¥Ö¥¸¥§¥¯¥È¤ËÆþ¤ì¤Þ¤¹¡£¥Ç¡¼¥¿¤Ï¡¢¼¡¤Î¤¤¤º¤ì¤«¤Îupdate¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤Ã¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ËÅϤµ¤ì¤Þ¤¹¡£final void update(byte b) final void update(byte[] data) final void update(byte[] data, int off, int len)¸¡¾Ú¤¹¤ë¥Ç¡¼¥¿¤¬¤¹¤Ù¤Æ
Signature¥ª¥Ö¥¸¥§¥¯¥È¤ËÆþ¤ë¤Þ¤Ç¡¢update¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£¤³¤ì¤Ç¡¢¼¡¤Î¤¤¤º¤ì¤«¤Îverify¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ½ð̾¤ò¸¡¾Ú¤Ç¤¤Þ¤¹¡£final boolean verify(byte[] signature) final boolean verify(byte[] signature, int offset, int length)°ú¿ô¤Ï¡¢½ð̾¤ò´Þ¤à¥Ð¥¤¥ÈÇÛÎó¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£°ú¿ô¤Ï¡¢½ð̾¤ò´Þ¤à¥Ð¥¤¥ÈÇÛÎó¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥Ð¥¤¥ÈÇÛÎó¤Ï¡¢Á°¤Ë¤¤¤º¤ì¤«¤Î
sign¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤ÆÊÖ¤µ¤ì¤¿½ð̾¥Ð¥¤¥È¤òÊÝ»ý¤·¤Þ¤¹¡£
verify¥á¥½¥Ã¥É¤Ï¡¢¥³¡¼¥É²½¤·¤¿½ð̾¤¬update¥á¥½¥Ã¥É¤ËÆþ¤ì¤¿¥Ç¡¼¥¿¤Îǧ¾Ú½ð̾¤«¤É¤¦¤«¤ò¼¨¤¹boolean¤òÊÖ¤·¤Þ¤¹¡£
verify¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤È¡¢signature (½ð̾) ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢initVerify¤ò¸Æ¤Ó½Ð¤·¤Æ¸¡¾ÚÍѤ˽é´ü²½¤µ¤ì¤¿¤È¤¤Î¾õÂ֤˥ꥻ¥Ã¥È¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò¥ê¥»¥Ã¥È¤¹¤ë¤Î¤Ç¡¢initVerify¤Ø¤Î¸Æ¤Ó½Ð¤·¤Ç»ØÄꤷ¤¿¸ø³«¸°¤ò»ý¤Ä¼±Ê̤ÎÊ̤νð̾¤ò¸¡¾Ú¤Ç¤¤Þ¤¹¡£¤¢¤ë¤¤¤Ï°Û¤Ê¤ëÈó¸ø³«¸°¤ò»ØÄꤷ¡¢(°Û¤Ê¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤Î½ð̾¤ò¸¡¾Ú¤¹¤ë¤¿¤á¤Ë
Signature¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ëÌÜŪ¤Ç)initVerify¤Ø¤Î¿·µ¬¸Æ¤Ó½Ð¤·¤òºîÀ®¤·¤¿¤ê¡¢(½ð̾¤òÀ¸À®¤¹¤ë¤¿¤á¤ËSignature¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ëÌÜŪ¤Ç)initSign¤Ø¤Î¿·µ¬¸Æ¤Ó½Ð¤·¤òºîÀ®¤·¤¿¤ê¤Ç¤¤Þ¤¹¡£
¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Î»ÅÍͤΥ¤¥ó¥¿¥Õ¥§¡¼¥¹¤ª¤è¤Ó¥¯¥é¥¹
¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Î»ÅÍͤϡ¢¥¢¥ë¥´¥ê¥º¥à¤È¤È¤â¤Ë»È¤ï¤ì¤ë¥Ñ¥é¥á¡¼¥¿¤Î¥»¥Ã¥È¤ÎÆ©ÌÀ¤Êɽ¸½¤Ç¤¹¡£
¥Ñ¥é¥á¡¼¥¿¤Î¥»¥Ã¥È¤Î¡ÖÆ©ÌÀ¤Ê¡×ɽ¸½¤È¤Ï¡¢¥»¥Ã¥È¤Î³Æ¥Ñ¥é¥á¡¼¥¿¤ÎÃͤ˸ÄÊ̤˥¢¥¯¥»¥¹¤Ç¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£¤³¤ì¤é¤ÎÃͤˤϡ¢Âбþ¤¹¤ë»ÅÍÍ¥¯¥é¥¹¤ËÄêµÁ¤µ¤ì¤¿
get¥á¥½¥Ã¥É¤Î 1 ¤Ä¤ò»È¤Ã¤Æ¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹ (¤¿¤È¤¨¤Ð¡¢DSAParameterSpec¤Ç¤Ï¡¢getP¡¢getQ¡¢¤ª¤è¤ÓgetG¥á¥½¥Ã¥É¤òÄêµÁ¤·¤Æ¡¢¤½¤ì¤¾¤ìp¡¢q¡¢¤ª¤è¤Óg¤Ë¥¢¥¯¥»¥¹¤¹¤ë)¡£¤³¤ì¤ËÂФ·¤Æ¡¢
AlgorithmParameters¥¯¥é¥¹¤Ï¡ÖÉÔÆ©ÌÀ¤Ê¡×ɽ¸½¤òÄ󶡤·¤Þ¤¹¡£¡ÖÉÔÆ©ÌÀ¤Ê¡×ɽ¸½¤Ç¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¥Õ¥£¡¼¥ë¥É¤ËľÀÜ¥¢¥¯¥»¥¹¤Ç¤¤Þ¤»¤ó¡£¥Ñ¥é¥á¡¼¥¿¥»¥Ã¥È¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥¢¥ë¥´¥ê¥º¥à̾¤Î¼èÆÀ (getAlgorithm¤Ë¤è¤ë)¡¢¤ª¤è¤Ó¤½¤Î¥Ñ¥é¥á¡¼¥¿¥»¥Ã¥ÈÍѤΤ¢¤ë¼ï¤ÎÉ乿²½¤Î¼èÆÀ (getEncoded¤Ë¤è¤ë) ¤·¤«¤Ç¤¤Þ¤»¤ó¡£°Ê²¼¤Ï¡¢
java.security.spec¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤Þ¤ì¤ë¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿»ÅÍͤΥ¤¥ó¥¿¥Õ¥§¡¼¥¹¤ª¤è¤Ó¥¯¥é¥¹¤ÎÀâÌÀ¤Ç¤¹¡£
AlgorithmParameterSpec¥¤¥ó¥¿¥Õ¥§¡¼¥¹AlgorithmParameterSpec¤Ï¡¢°Å¹æ²½¥Ñ¥é¥á¡¼¥¿¤ÎÆ©ÌÀ¤Ê»ÅÍͤؤΥ¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¹¡£¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤Ï¡¢¥á¥½¥Ã¥É¤Þ¤¿¤ÏÄê¿ô¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎÍ£°ì¤ÎÌÜŪ¤Ï¡¢¤¹¤Ù¤Æ¤Î¥Ñ¥é¥á¡¼¥¿¤Î»ÅÍͤò¥°¥ë¡¼¥×²½¤¹¤ë¤³¤È (¤ª¤è¤Ó¤½¤ì¤é¤Î¥Ñ¥é¥á¡¼¥¿¤Ë°ÂÁ´¤Ê·¿¤òÄ󶡤¹¤ë¤³¤È) ¤Ç¤¹¡£¤¹¤Ù¤Æ¤Î¥Ñ¥é¥á¡¼¥¿¤Î»ÅÍͤǡ¢¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
DSAParameterSpec¥¯¥é¥¹AlgorithmParameterSpec¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤¹¤ë¤³¤Î¥¯¥é¥¹¤Ï¡¢DSA ¥¢¥ë¥´¥ê¥º¥à¤Ç»È¤ï¤ì¤ë¥Ñ¥é¥á¡¼¥¿¤Î¥»¥Ã¥È¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤Ë¤Ï¡¢¼¡¤Î¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥á¥½¥Ã¥É¤Ï¡¢DSA ¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Ç¤¢¤ë¥×¥é¥¤¥à¤ÎBigInteger getP() BigInteger getQ() BigInteger getG()p¡¢¥µ¥Ö¥×¥é¥¤¥à¤Îq¡¢¤ª¤è¤Ó¥Ù¡¼¥¹¤Îg¤òÊÖ¤·¤Þ¤¹¡£
AlgorithmParameters¥¯¥é¥¹AlgorithmParameters¥¯¥é¥¹¤Ï¡¢°Å¹æ²½¥Ñ¥é¥á¡¼¥¿¤ÎÉÔÆ©ÌÀ¤Êɽ¸½¤òÄ󶡤¹¤ë¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ç¤¹¡£¡ÖÉÔÆ©ÌÀ¤Ê¡×ɽ¸½¤Ç¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¥Õ¥£¡¼¥ë¥É¤ËľÀÜ¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¥Ñ¥é¥á¡¼¥¿¥»¥Ã¥È¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥¢¥ë¥´¥ê¥º¥à̾¤Î¼èÆÀ¡¢¤ª¤è¤Ó¤½¤Î¥Ñ¥é¥á¡¼¥¿¥»¥Ã¥ÈÍѤΤ¢¤ë¼ï¤ÎÉ乿²½¤Î¼èÆÀ¤·¤«¤Ç¤¤Þ¤»¤ó¡£¤³¤ì¤ÈÂоÈŪ¤Ê¤Î¤¬¡¢¥Ñ¥é¥á¡¼¥¿¤Î¡ÖÆ©ÌÀ¤Ê¡×ɽ¸½¤Ç¤¹¡£¤³¤Î¾ì¹ç¡¢Âбþ¤¹¤ë»ÅÍÍ¥¯¥é¥¹¤ÇÄêµÁ¤µ¤ì¤¿
get¥á¥½¥Ã¥É¤Î 1 ¤Ä¤ò»È¤Ã¤Æ¡¢Ãͤ˸ġ¹¤Ë¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹¡£AlgorithmParameters¤ËgetParameterSpec¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢AlgorithmParameters¥ª¥Ö¥¸¥§¥¯¥È¤òÆ©ÌÀ¤Ê»ÅÍͤËÊÑ´¹¤Ç¤¤Þ¤¹ (°Ê²¼¤ò»²¾È)¡£
AlgorithmParameters¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®¤É¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Î¾ì¹ç¤âƱÍͤˡ¢
AlgorithmParameters¥¯¥é¥¹¤Î static ¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥ÉgetInstance¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢ÆÃÄê·¿¤Î¥¢¥ë¥´¥ê¥º¥à¤ÎAlgorithmParameters¥ª¥Ö¥¸¥§¥¯¥È¤ò³ÍÆÀ¤·¤Þ¤¹¡£
static AlgorithmParameters getInstance(String algorithm)¸Æ¤Ó½Ð¤·Â¦¤Ï¡¢Ç¤°Õ¤Ç¥×¥í¥Ð¥¤¥À¤Þ¤¿¤Ï
Ãí: ¥¢¥ë¥´¥ê¥º¥à̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£
Provider¥¯¥é¥¹¤Î̾Á°¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À̾¤ò»ØÄꤹ¤ë¤È¡¢Í׵᤹¤ë¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Î¼ÂÁõ¤ò³Î¼Â¤Ë»ØÄê¥×¥í¥Ð¥¤¥À¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£static AlgorithmParameters getInstance(String algorithm, String provider) static AlgorithmParameters getInstance(String algorithm, Provider provider)
AlgorithmParameters¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½
AlgorithmParameters¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬À¸À®¤µ¤ì¤¿¤é¡¢Å¬Àڤʥѥé¥á¡¼¥¿¤Î»ÅÍͤޤ¿¤Ï¥Ñ¥é¥á¡¼¥¿¤ÎÉ乿²½¤ò»È¤Ã¤Æ¡¢init¤Ø¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤ë½é´ü²½¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Îvoid init(AlgorithmParameterSpec paramSpec) void init(byte[] params) void init(byte[] params, String format)init¥á¥½¥Ã¥É¤Ç¡¢params¤Ï¡¢É乿²½¤µ¤ì¤¿¥Ñ¥é¥á¡¼¥¿¤ò´Þ¤àÇÛÎó¤Ç¡¢format¤Ï¡¢Éü¹æ²½·Á¼°¤Î̾Á°¤Ç¤¹¡£params°ú¿ô¤ò»ØÄꤷ¡¢format°ú¿ô¤ò»ØÄꤷ¤Ê¤¤init¥á¥½¥Ã¥É¤Ç¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¤Î¥×¥é¥¤¥Þ¥êÉü¹æ²½·Á¼°¤¬»È¤ï¤ì¤Þ¤¹¡£¥Ñ¥é¥á¡¼¥¿¤Î ASN.1 »ÅÍͤ¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï¡¢¥×¥é¥¤¥Þ¥êÉü¹æ²½·Á¼°¤Ï¡¢ASN.1 ¤Ç¤¹¡£
Ãí:AlgorithmParameters¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢1 ²ó¤À¤±½é´ü²½¤Ç¤¤Þ¤¹¡£ºÆÍøÍѤϤǤ¤Þ¤»¤ó¡£
É乿²½¤µ¤ì¤¿¥Ñ¥é¥á¡¼¥¿¤Î¼èÆÀ
AlgorithmParameters¥ª¥Ö¥¸¥§¥¯¥È¤Çɽ¸½¤µ¤ì¤ë¥Ñ¥é¥á¡¼¥¿¤Î¥Ð¥¤¥ÈÉ乿²½¤Ï¡¢getEncoded¤Ø¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¼èÆÀ¤Ç¤¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¤ò¥×¥é¥¤¥Þ¥êÉ乿²½·Á¼°¤ÇÊÖ¤·¤Þ¤¹¡£¤³¤Î¼ï¤Î¥Ñ¥é¥á¡¼¥¿¤Î ASN.1 »ÅÍͤ¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï¡¢¥×¥é¥¤¥Þ¥êÉü¹æ²½·Á¼°¤Ï¡¢ASN.1 ¤Ç¤¹¡£byte[] getEncoded()ÆÃÄê¤Î·Á¼°¤Ç¥Ñ¥é¥á¡¼¥¿¤¬ÊÖ¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ëµ½Ò¤·¤Þ¤¹¡£
byte[] getEncoded(String format)format¤¬ null ¤Î¾ì¹ç¤Ï¡¢¤Û¤«¤ÎgetEncoded¥á¥½¥Ã¥É¤ÈƱÍͤˡ¢¥×¥é¥¤¥Þ¥êÉü¹æ²½·Á¼°¤¬»È¤ï¤ì¤Þ¤¹¡£
Ãí: Sun ¥×¥í¥Ð¥¤¥À¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤Î AlgorithmParameters ¤Î¼ÂÁõ¤Ç¤Ï¡¢format°ú¿ô¤Ï¡¢¸½ºß¤Î¤È¤³¤í̵»ë¤µ¤ì¤Þ¤¹¡£
AlgorithmParameters¥ª¥Ö¥¸¥§¥¯¥È¤«¤éÆ©ÌÀ¤Ê»ÅÍͤؤÎÊÑ´¹¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤ÎÆ©ÌÀ¤Ê¥Ñ¥é¥á¡¼¥¿¤Î»ÅÍͤϡ¢
getParameterSpec¤Ø¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤ê¡¢AlgorithmParameters¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£AlgorithmParameterSpec getParameterSpec(Class paramSpec)paramSpec¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¤¬ÊÖ¤µ¤ì¤ë¤Ù¤»ÅÍÍ¥¯¥é¥¹¤ò¼±Ê̤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢»ÅÍÍ¥¯¥é¥¹DSAPublicKeySpec.class¤¬¼±Ê̤µ¤ì¤¿¾ì¹ç¡¢¥Ñ¥é¥á¡¼¥¿¤¬DSAParameterSpec¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ËÊÖ¤µ¤ì¤ë¤Ù¤¤Ç¤¢¤ë¤³¤È¤ò»Ø¼¨¤·¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤Ï¡¢java.security.spec¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£
AlgorithmParameterGenerator¥¯¥é¥¹AlgorithmParameterGenerator¥¯¥é¥¹¤Ï¡¢ÆÃÄê¤Î¥¢¥ë¥´¥ê¥º¥à (AlgorithmParameterGenerator¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ÎºîÀ®»þ¤Ë»ØÄꤵ¤ì¤ë¥¢¥ë¥´¥ê¥º¥à) ¤ËŬ¤·¤¿¥Ñ¥é¥á¡¼¥¿¤Î¥»¥Ã¥È¤ÎÀ¸À®¤Ë»ÈÍѤµ¤ì¤ë¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ç¤¹¡£
AlgorithmParameterGenerator¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®¤É¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Î¾ì¹ç¤âƱÍͤˡ¢
AlgorithmParameterGenerator¥¯¥é¥¹¤Î static ¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥ÉgetInstance¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢ÆÃÄê·¿¤Î¥¢¥ë¥´¥ê¥º¥à¤ÎAlgorithmParameterGenerator¥ª¥Ö¥¸¥§¥¯¥È¤ò³ÍÆÀ¤·¤Þ¤¹¡£
static AlgorithmParameterGenerator getInstance( String algorithm)
Ãí: ¥¢¥ë¥´¥ê¥º¥à̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£
¸Æ¤Ó½Ð¤·Â¦¤Ï¡¢Ç¤°Õ¤Ç¥×¥í¥Ð¥¤¥À¤Þ¤¿¤Ï
Provider¥¯¥é¥¹¤Î̾Á°¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À̾¤ò»ØÄꤹ¤ë¤È¡¢¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¥¸¥§¥Í¥ì¡¼¥¿¤Î¼ÂÁõ¤ò³Î¼Â¤Ë»ØÄê¥×¥í¥Ð¥¤¥À¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£static AlgorithmParameterGenerator getInstance( String algorithm, String provider) static AlgorithmParameterGenerator getInstance( String algorithm, Provider provider)
AlgorithmParameterGenerator¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½
AlgorithmParameterGenerator¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¥¢¥ë¥´¥ê¥º¥àÆÈΩ·¿¡¢¤Þ¤¿¤Ï¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤Î 2 ¼ïÎà¤ÎÊýË¡¤Ç½é´ü²½¤Ç¤¤Þ¤¹¡£¥¢¥ë¥´¥ê¥º¥àÆÈΩ·¿¤ÎÊýË¡¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤Î¥Ñ¥é¥á¡¼¥¿¥¸¥§¥Í¥ì¡¼¥¿¤¬¡Ö¥µ¥¤¥º¡×¤ª¤è¤ÓÍð¿ô¤ÎȯÀ¸¸»¤È¤¤¤¦³µÇ°¤ò¶¦Í¤¹¤ë¤È¤¤¤¦ÆÃÀ¤òÍøÍѤ·¤Þ¤¹¡£¥µ¥¤¥º¤Îñ°Ì¤Ï¡¢¤¹¤Ù¤Æ¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤ÇÉáÊ×Ū¤Ë¶¦Ä̤·¤Æ¤¤¤Þ¤¹¤¬¡¢¤½¤Î²ò¼á¤Ï¥¢¥ë¥´¥ê¥º¥à¤Ë¤è¤ê°Û¤Ê¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢DSA ¥¢¥ë¥´¥ê¥º¥à¤Î¥Ñ¥é¥á¡¼¥¿¤Î¾ì¹ç¡¢¡Ö¥µ¥¤¥º¡×¤Ï¥×¥é¥¤¥à¥â¥¸¥å¥é¥¹¤Î¥Ó¥Ã¥È¿ô¤Î¥µ¥¤¥º¤Ë°ìÃפ·¤Þ¤¹¡£ÆÃÄê¤Î¥¢¥ë¥´¥ê¥º¥à¤Î¥µ¥¤¥º¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÉÕÏ¿ B ¤Î¡Ö¥¢¥ë¥´¥ê¥º¥à¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎÊýË¡¤ò»È¤¦¤È¡¢¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤Î¥Ñ¥é¥á¡¼¥¿¤ÎÀ¸À®Ãͤ¬ (¤¢¤ë¾ì¹ç¤Ï)¡¢¥Ç¥Õ¥©¥ë¥È´ð½àÃͤˤʤê¤Þ¤¹¡£ ÉáÊ×Ū¤Ë¶¦Í¤µ¤ì¤ë¤³¤ì¤é 2 ¤Ä¤Î°ú¿ô¤Î·¿¤ò¤È¤ë
init¥á¥½¥Ã¥É¤¬ 1 ¤Ä¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢void init(int size, SecureRandom random)size°ú¿ô¤À¤±¤ò¤È¤ê¡¢¥·¥¹¥Æ¥à¤¬Ä󶡤¹¤ëÍð¿ô¤ÎȯÀ¸¸»¤ò»ÈÍѤ¹¤ëinit¥á¥½¥Ã¥É¤â¤¢¤ê¤Þ¤¹¡£void init(int size)3 ÈÖÌܤÎÊýË¡¤Ç¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¥¸¥§¥Í¥ì¡¼¥¿¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½¤Ë¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤ò»È¤¤¤Þ¤¹¡£¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤Ï¡¢
AlgorithmParameterSpec¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤ËÄ󶡤µ¤ì¤ë¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤Î¥Ñ¥é¥á¡¼¥¿À¸À®ÃͤΥ»¥Ã¥È¤Ë¤è¤Ã¤ÆÉ½¤µ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢Diffie-Hellman ¥·¥¹¥Æ¥à¥Ñ¥é¥á¡¼¥¿¤òÀ¸À®¤¹¤ë¤Ë¤Ï¡¢Ä̾¥Ñ¥é¥á¡¼¥¿À¸À®Ãͤϡ¢¥×¥é¥¤¥à¥â¥¸¥å¥é¥¹¤ª¤è¤Ó¥é¥ó¥À¥à»Ø¿ô¤Î¥µ¥¤¥º¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£¤É¤Á¤é¤Î¥µ¥¤¥º¤â¥Ó¥Ã¥È¿ô¤Ç»ØÄꤷ¤Þ¤¹¡£Diffie-Hellman ¥¢¥ë¥´¥ê¥º¥à¤Ï¡¢JCE 1.2 ¤«¤é JCE ¤Î°ìÉô¤È¤·¤ÆÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£void init(AlgorithmParameterSpec genParamSpec, SecureRandom random) void init(AlgorithmParameterSpec genParamSpec)¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤ÎÀ¸À®
AlgorithmParameterGenerator¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤ª¤è¤Ó½é´ü²½¤·¤¿¤é¡¢generateParameters¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤òÀ¸À®¤Ç¤¤Þ¤¹¡£AlgorithmParameters generateParameters()
Key ¥¤¥ó¥¿¥Õ¥§¡¼¥¹
Key¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¡¢¤¹¤Ù¤Æ¤ÎÉÔÆ©ÌÀ¤Ê¸°¤Ë´Ø¤¹¤ë¥È¥Ã¥×¥ì¥Ù¥ë¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¹¡£¤¹¤Ù¤Æ¤ÎÉÔÆ©ÌÀ¤Ê¸°¥ª¥Ö¥¸¥§¥¯¥È¤¬¶¦Í¤¹¤ëµ¡Ç½¤òÄêµÁ¤·¤Þ¤¹¡£¡ÖÉÔÆ©ÌÀ¤Ê¡×¸°¤Îɽ¸½¤Ç¤Ï¡¢¸°¤ò¹½À®¤¹¤ë¸°¥Ç¡¼¥¿¤ËľÀÜ¥¢¥¯¥»¥¹¤Ç¤¤Þ¤»¤ó¡£¤Ä¤Þ¤ê¡¢¡ÖÉÔÆ©ÌÀ¡×¤µ¤Ë¤è¤ê¡¢¸°¤Ø¤Î¥¢¥¯¥»¥¹¤¬¡¢
Key¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤ëgetAlgorithm¡¢getEncoded¡¢¤ª¤è¤ÓgetFormat¤Î 3 ¤Ä¤Î¥á¥½¥Ã¥É¤À¤±¤ËÀ©¸Â¤µ¤ì¤Þ¤¹¡£ ¤³¤ì¤ÈÂоÈŪ¤Ê¤Î¤¬¡ÖÆ©ÌÀ¤Ê¡×ɽ¸½¤Ç¡¢¤³¤Î¾ì¹ç¤Ï¡¢Âбþ¤¹¤ë»ÅÍÍ¥¯¥é¥¹Æâ¤ËÄêµÁ¤µ¤ì¤¿get¥á¥½¥Ã¥É¤Î 1 ¤Ä¤ò»È¤Ã¤Æ¡¢³Æ¸°¥Ç¡¼¥¿¤ÎÃͤ˸ġ¹¤Ë¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹¡£ÉÔÆ©ÌÀ¤Ê¸°¤Ï¤¹¤Ù¤Æ¡¢¼¡¤Î 3 ¤Ä¤ÎÆÃÀ¤ò»ý¤Á¤Þ¤¹¡£
¸°¤Ï°ìÈÌŪ¤Ë¡¢¸°¥¸¥§¥Í¥ì¡¼¥¿¡¢¾ÚÌÀ½ñ¡¢¸°»ÅÍÍ (
- ¥¢¥ë¥´¥ê¥º¥à
- ¸°¤ËÂФ¹¤ë¸°¤Î¥¢¥ë¥´¥ê¥º¥à¤Ç¤¹¡£Ä̾¸°¤Î¥¢¥ë¥´¥ê¥º¥à¤Ï¡¢°Å¹æ²½¤Þ¤¿¤ÏÈóÂоÎÁàºî¥¢¥ë¥´¥ê¥º¥à (DSA ¤ä RSA ¤Ê¤É) ¤Ç¡¢¤³¤ì¤é¤Î¥¢¥ë¥´¥ê¥º¥à¤ä´ØÏ¢¥¢¥ë¥´¥ê¥º¥à (RSA ¤ò»È¤¦ MD5¡¢RSA ¤ò»È¤¦ SHA-1 ¤Ê¤É) ¤ÈÏ¢·È¤·¤Æµ¡Ç½¤·¤Þ¤¹¡£¸°¤Î¥¢¥ë¥´¥ê¥º¥à̾¤Ï¡¢°Ê²¼¤Î¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ³ÍÆÀ¤·¤Þ¤¹¡£
String getAlgorithm()- ¥³¡¼¥É²½·Á¼°
- ¸°¤Î³°Éô¥³¡¼¥É²½·Á¼°¤Ï¡¢¸°¤òÊ̤ÎÁÈ¿¥¤ËžÁ÷¤¹¤ë¾ì¹ç¤Ê¤É¡¢¸°¤Îɸ½àɽ¼¨¤¬ Java ²¾ÁÛ¥Þ¥·¥ó¤Î³°Éô¤ÇɬÍפʤȤ¤Ë»È¤¤¤Þ¤¹¡£¸°¤Ïɸ½à·Á¼° (X.509 ¤ä PKCS #8 ¤Ê¤É) ¤Ë½¾¤Ã¤Æ¥³¡¼¥É²½¤µ¤ì¡¢°Ê²¼¤Î¥á¥½¥Ã¥É¤ò»È¤Ã¤ÆÊÖ¤µ¤ì¤Þ¤¹¡£
byte[] getEncoded()- ¥Õ¥©¡¼¥Þ¥Ã¥È
- ¥³¡¼¥É²½¤·¤¿¸°¤Î¥Õ¥©¡¼¥Þ¥Ã¥È̾¤Ç¤¹¡£°Ê²¼¤Î¥á¥½¥Ã¥É¤«¤éÊÖ¤µ¤ì¤Þ¤¹¡£
String getFormat()KeyFactory¤ò»ÈÍÑ) ¤Þ¤¿¤Ï¸°´ÉÍý¤Ç»È¤¦¥¡¼¥¹¥È¥¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¥¢¥¯¥»¥¹¤¹¤ëKeyStore¤Î¼ÂÁõ¤«¤é³ÍÆÀ¤·¤Þ¤¹¡£
KeyFactory¤ò»È¤Ã¤Æ¡¢¥¢¥ë¥´¥ê¥º¥à°Í¸·¿¤ÎÊýË¡¤ÇÉ乿²½¤µ¤ì¤¿¸°¤ò²òÀϤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£¤Þ¤¿¡¢
CertificateFactory¤ò»È¤Ã¤Æ¡¢¾ÚÌÀ½ñ¤ò²òÀϤ¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¼¡¤Ë¡¢
java.security.interfaces¥Ñ¥Ã¥±¡¼¥¸Æâ¤ÎKey¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò³ÈÄ¥¤¹¤ë¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥ê¥¹¥È¤ò¼¨¤·¤Þ¤¹¡£
PublicKey¤ª¤è¤ÓPrivateKey¥¤¥ó¥¿¥Õ¥§¡¼¥¹
PublicKey¤ª¤è¤ÓPrivateKey¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¤É¤Á¤é¤âKey¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò·Ñ¾µ¤·¤Þ¤¹¤¬¡¢¤³¤ì¤é¤Ï¥á¥½¥Ã¥É¤ò»È¤ï¤Ê¤¤¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¡¢·¿¤Î°ÂÁ´À¤ª¤è¤Ó·¿¤Î¼±Ê̤˻ÈÍѤ·¤Þ¤¹¡£
¸°»ÅÍͤϡ¢¸°¤ò¹½À®¤¹¤ë¸°¥Ç¡¼¥¿¤ÎÆ©ÌÀ¤Êɽ¸½¤Ç¤¹¡£¸°¤¬¥Ï¡¼¥É¥¦¥§¥¢¥Ç¥Ð¥¤¥¹¾å¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤Î¸°»ÅÍͤˤϡ¢¥Ç¥Ð¥¤¥¹¾å¤Î¸°¤Î¼±Ê̤ò½õ¤±¤ë¾ðÊó¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
¸°¤Î¡ÖÆ©ÌÀ¤Ê¡×ɽ¸½¤È¤Ï¡¢Âбþ¤¹¤ë»ÅÍÍ¥¯¥é¥¹¤ÇÄêµÁ¤µ¤ì¤¿
get¥á¥½¥Ã¥É¤Î 1 ¤Ä¤ò»È¤Ã¤Æ¡¢³Æ¸°¥Ç¡¼¥¿¤Ë¸Ä¡¹¤Ë¥¢¥¯¥»¥¹¤Ç¤¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢DSAPrivateKeySpec¤Ï¡¢getX¡¢getP¡¢getQ¡¢¤ª¤è¤ÓgetG¥á¥½¥Ã¥É¤òÄêµÁ¤·¤Æ¡¢Èó¸ø³«¸°x¤ª¤è¤Ó¸°¤Î·×»»¤Ë»ÈÍѤ¹¤ë DSA ¥¢¥ë¥´¥ê¥º¥à¤Î¥Ñ¥é¥á¡¼¥¿ (¥×¥é¥¤¥à¤Îp¡¢¥µ¥Ö¥×¥é¥¤¥à¤Îq¤ª¤è¤Ó¥Ù¡¼¥¹¤Îg) ¤Ë¥¢¥¯¥»¥¹¤·¤Þ¤¹¡£¤³¤Îɽ¸½¤ÈÂоÈŪ¤Ê¤Î¤¬¡¢
Key¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤ë¤è¤¦¤Ê¡¢¡ÖÉÔÆ©ÌÀ¤Ê¡×ɽ¸½¤Ç¤¹¡£¡ÖÉÔÆ©ÌÀ¤Ê¡×¸°¤Îɽ¸½¤Ç¤Ï¡¢¸°Í×ÁÇ¥Õ¥£¡¼¥ë¥É¤ËľÀÜ¥¢¥¯¥»¥¹¤Ç¤¤Þ¤»¤ó¡£¤Ä¤Þ¤ê¡¢¡ÖÉÔÆ©ÌÀ¡×¤µ¤Ë¤è¤ê¡¢¸°¤Ø¤Î¥¢¥¯¥»¥¹¤¬¡¢Key¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤ëgetAlgorithm¡¢getEncoded¡¢¤ª¤è¤ÓgetFormat¤Î 3 ¤Ä¤Î¥á¥½¥Ã¥É¤À¤±¤ËÀ©¸Â¤µ¤ì¤Þ¤¹¡£¸°¤Ï¡¢¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤«¡¢¤Þ¤¿¤Ï¥¢¥ë¥´¥ê¥º¥àÆÈΩ·¿¤ÎÉ乿²½·Á¼° (ASN.1 ¤Ê¤É) ¤ÎÊýË¡¤Ç»ØÄê¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢DSA Èó¸ø³«¸°¤Ï¡¢Èó¸ø³«¸°¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È
x¡¢p¡¢q¡¢¤ª¤è¤Óg¤Ë¤è¤Ã¤Æ»ØÄꤹ¤ë¤« (DSAPrivateKeySpec¤ò»²¾È)¡¢¤Þ¤¿¤Ï¡¢Èó¸ø³«¸°¤Î DER É乿²½¤ò»È¤Ã¤Æ»ØÄꤹ¤ë¤³¤È¤¬²Äǽ¤Ç¤¹ (PKCS8EncodedKeySpec¤ò»²¾È)¡£¼¡¤Ë¡¢
java.security.spec¥Ñ¥Ã¥±¡¼¥¸Æâ¤Ë´Þ¤Þ¤ì¤ë¸°»ÅÍͤΥ¤¥ó¥¿¥Õ¥§¡¼¥¹¤ª¤è¤Ó¥¯¥é¥¹¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£
KeySpec¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤Ï¡¢¥á¥½¥Ã¥É¤Þ¤¿¤ÏÄê¿ô¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎÍ£°ì¤ÎÌÜŪ¤Ï¡¢¤¹¤Ù¤Æ¤Î¸°»ÅÍͤò¥°¥ë¡¼¥×²½¤¹¤ë¤³¤È¤ª¤è¤Ó¤½¤ì¤é¤Î¥°¥ë¡¼¥×¤Ë°ÂÁ´¤Ê·¿¤òÄ󶡤¹¤ë¤³¤È¤Ç¤¹¡£¤¹¤Ù¤Æ¤Î¸°»ÅÍͤǡ¢¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
DSAPrivateKeySpec¥¯¥é¥¹¤³¤Î¥¯¥é¥¹ (KeySpec¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ) ¤Ï¡¢´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Ñ¥é¥á¡¼¥¿¤ò»È¤Ã¤Æ DSA Èó¸ø³«¸°¤ò»ØÄꤷ¤Þ¤¹¡£DSAPrivateKeySpec¥¯¥é¥¹¤Ë¤Ï¡¢¼¡¤Î¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥á¥½¥Ã¥É¤Ï¡¢Èó¸ø³«¸°BigInteger getX() BigInteger getP() BigInteger getQ() BigInteger getG()x¡¢¤ª¤è¤Ó¸°¤Î·×»»¤Ë»ÈÍѤµ¤ì¤ë DSA ¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Ç¤¢¤ë¥×¥é¥¤¥à¤Îp¡¢¥µ¥Ö¥×¥é¥¤¥à¤Îq¡¢¤ª¤è¤Ó¥Ù¡¼¥¹¤Îg¤òÊÖ¤·¤Þ¤¹¡£
DSAPublicKeySpec¥¯¥é¥¹¤³¤Î¥¯¥é¥¹ (KeySpec¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ) ¤Ï¡¢´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Ñ¥é¥á¡¼¥¿¤ò»È¤Ã¤Æ DSA ¸ø³«¸°¤ò»ØÄꤷ¤Þ¤¹¡£DSAPublicKeySpec¥¯¥é¥¹¤Ë¤Ï¡¢¼¡¤Î¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥á¥½¥Ã¥É¤Ï¡¢¸ø³«¸°BigInteger getY() BigInteger getP() BigInteger getQ() BigInteger getG()y¡¢¤ª¤è¤Ó¸°¤Î·×»»¤Ë»ÈÍѤµ¤ì¤ë DSA ¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Ç¤¢¤ë¥×¥é¥¤¥à¤Îp¡¢¥µ¥Ö¥×¥é¥¤¥à¤Îq¡¢¤ª¤è¤Ó¥Ù¡¼¥¹¤Îg¤òÊÖ¤·¤Þ¤¹¡£
RSAPrivateKeySpec¥¯¥é¥¹¤³¤Î¥¯¥é¥¹ (KeySpec¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ) ¤Ï¡¢RSA Èó¸ø³«¸°¤ò»ØÄꤷ¤Þ¤¹¡£RSAPrivateKeySpec¥¯¥é¥¹¤Ë¤Ï¡¢¼¡¤Î¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥á¥½¥Ã¥É¤Ï¡¢RSA Èó¸ø³«¸°¤ò¹½À®¤¹¤ë RSA ¥â¥¸¥å¥é¥¹BigInteger getModulus() BigInteger getPrivateExponent()n¤ª¤è¤ÓÈó¸ø³«»Ø¿ôd¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£
RSAPrivateCrtKeySpec¥¯¥é¥¹¤³¤Î¥¯¥é¥¹ (RSAPrivateKeySpec¥¯¥é¥¹¤ò·Ñ¾µ) ¤Ï¡¢PKCS #1 ɸ½à¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¡¢Ãæ¹ñ¾ê;ÄêÍý (CRT) ¾ðÊó¤ÎÃͤò»È¤Ã¤Æ¡¢RSA Èó¸ø³«¸°¤ò»ØÄꤷ¤Þ¤¹¡£RSAPrivateCrtKeySpec¥¯¥é¥¹¤Ë¤Ï¡¢¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤ÎRSAPrivateKeySpec¤«¤é·Ñ¾µ¤·¤¿¥á¥½¥Ã¥É¤Î¤Û¤«¤Ë¡¢¼¡¤Î¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥á¥½¥Ã¥É¤Ï¡¢¸ø³«»Ø¿ôBigInteger getPublicExponent() BigInteger getPrimeP() BigInteger getPrimeQ() BigInteger getPrimeExponentP() BigInteger getPrimeExponentQ() BigInteger getCrtCoefficient()e¤ª¤è¤Ó CRT ¾ðÊó¤ÎÀ°¿ô¤òÊÖ¤·¤Þ¤¹¡£CRT ¾ðÊó¤ÎÀ°¿ô¤Ï¡¢¥â¥¸¥å¥é¥¹n¤ÎÁǰø¿ôp¡¢n¤ÎÁǰø¿ôq¡¢»Ø¿ôd mod (p-1)¡¢»Ø¿ôd mod (q-1)¡¢¤ª¤è¤ÓÃæ¹ñ¾ê;ÄêÍý·¸¿ô(q ¤ÎµÕ¿ô) mod p¤Ç¤¹¡£RSA Èó¸ø³«¸°¤Ï¡¢ÏÀÍýŪ¤Ë¤Ï¥â¥¸¥å¥é¥¹¤ÈÈó¸ø³«¤Î»Ø¿ô¤À¤±¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£CRT Ãͤϡ¢¸úΨ¤ò¸þ¾å¤µ¤»¤ëÌÜŪ¤Ç¸ºß¤·¤Þ¤¹¡£
RSAMultiPrimePrivateCrtKeySpec¥¯¥é¥¹¤³¤Î¥¯¥é¥¹ (RSAPrivateKeySpec¥¯¥é¥¹¤ò·Ñ¾µ) ¤Ï¡¢PKCS#1 v2.1 ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¡¢Ãæ¹ñ¾ê;ÄêÍý (CRT) ¾ðÊó¤ÎÃͤò»È¤Ã¤Æ¡¢RSA ¥Þ¥ë¥Á¥×¥é¥¤¥àÈó¸ø³«¸°¤ò»ØÄꤷ¤Þ¤¹¡£RSAMultiPrimePrivateCrtKeySpec¥¯¥é¥¹¤Ë¤Ï¡¢¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤ÎRSAPrivateKeySpec¤«¤é·Ñ¾µ¤·¤¿¥á¥½¥Ã¥É¤Î¤Û¤«¤Ë¡¢¼¡¤Î¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥á¥½¥Ã¥É¤Ï¡¢¸ø³«»Ø¿ôBigInteger getPublicExponent() BigInteger getPrimeP() BigInteger getPrimeQ() BigInteger getPrimeExponentP() BigInteger getPrimeExponentQ() BigInteger getCrtCoefficient() RSAOtherPrimeInfo[] getOtherPrimeInfo()e¤ª¤è¤Ó CRT ¾ðÊó¤ÎÀ°¿ô¤òÊÖ¤·¤Þ¤¹¡£CRT ¾ðÊó¤ÎÀ°¿ô¤Ï¡¢¥â¥¸¥å¥é¥¹n¤ÎÁǰø¿ôp¡¢n¤ÎÁǰø¿ôq¡¢»Ø¿ôd mod (p-1)¡¢»Ø¿ôd mod (q-1)¡¢¤ª¤è¤ÓÃæ¹ñ¾ê;ÄêÍý·¸¿ô(q ¤ÎµÕ¿ô) mod p¤Ç¤¹¡£
getOtherPrimeInfo¥á¥½¥Ã¥É¤Ï¡¢otherPrimeInfo(PKCS#1 v 2.1 ¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë) ¤òÊÖ¤¹¤«¡¢¤Þ¤¿¤Ï¡¢Áǰø¿ô¤¬ 2 ¤Ä (p¤ª¤è¤Óq) ¤·¤«¤Ê¤¤¾ì¹ç¤Ï¡¢null ¤òÊÖ¤·¤Þ¤¹¡£RSA Èó¸ø³«¸°¤Ï¡¢ÏÀÍýŪ¤Ë¤Ï¥â¥¸¥å¥é¥¹¤ÈÈó¸ø³«¤Î»Ø¿ô¤À¤±¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£CRT Ãͤϡ¢¸úΨ¤ò¸þ¾å¤µ¤»¤ëÌÜŪ¤Ç¸ºß¤·¤Þ¤¹¡£
RSAPublicKeySpec¥¯¥é¥¹¤³¤Î¥¯¥é¥¹ (KeySpec¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ) ¤Ï¡¢RSA ¸ø³«¸°¤ò»ØÄꤷ¤Þ¤¹¡£RSAPublicKeySpec¥¯¥é¥¹¤Ë¤Ï¡¢¼¡¤Î¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥á¥½¥Ã¥É¤Ï¡¢RSA ¸ø³«¸°¤ò¹½À®¤¹¤ë RSA ¥â¥¸¥å¥é¥¹BigInteger getModulus() BigInteger getPublicExponent()n¤ª¤è¤Ó¸ø³«»Ø¿ôe¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£
EncodedKeySpec¥¯¥é¥¹¤³¤Î abstract ¥¯¥é¥¹ (KeySpec¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤¹¤ë) ¤Ï¡¢É乿²½¤µ¤ì¤¿·Á¼°¤Î¸ø³«¸°¤Þ¤¿¤ÏÈó¸ø³«¸°¤òɽ¤·¤Þ¤¹¡£¤½¤ÎgetEncoded¥á¥½¥Ã¥É¤Ï¡¢¼¡¤ÎÉ乿²½¤µ¤ì¤¿¸°¤òÊÖ¤·¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤Îabstract byte[] getEncoded();getFormat¥á¥½¥Ã¥É¤Ï¡¢¼¡¤ÎÉ乿²½·Á¼°¤Î̾Á°¤òÊÖ¤·¤Þ¤¹¡£abstract String getFormat();¶ñÂÎŪ¤Ê¼ÂÁõ
PKCS8EncodedKeySpec¤ª¤è¤ÓX509EncodedKeySpec¤Ë¤Ä¤¤¤Æ¤Ï¡¢¼¡¤ÎÀá¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
PKCS8EncodedKeySpec¥¯¥é¥¹¤³¤Î¥¯¥é¥¹¤Ï¡¢EncodedKeySpec¤Î¥µ¥Ö¥¯¥é¥¹¤Ç¡¢PKCS #8 ɸ½à¤Ç»ØÄꤵ¤ì¤¿·Á¼°¤Ë½¾¤Ã¤Æ¡¢Èó¸ø³«¸°¤Î DER É乿²½¤òɽ¸½¤·¤Þ¤¹¡£ ¤³¤Î¥¯¥é¥¹¤ÎgetEncoded¥á¥½¥Ã¥É¤Ï¡¢PKCS #8 ɸ½à¤Ë½¾¤Ã¤ÆÉ乿²½¤µ¤ì¤¿¸°¤Î¥Ð¥¤¥È¤òÊÖ¤·¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤ÎgetFormat¥á¥½¥Ã¥É¤Ï¡¢Ê¸»úÎó PKCS#8 ¤òÊÖ¤·¤Þ¤¹¡£
X509EncodedKeySpec¥¯¥é¥¹¤³¤Î¥¯¥é¥¹¤Ï¡¢EncodedKeySpec¤Î¥µ¥Ö¥¯¥é¥¹¤Ç¡¢X.509 ɸ½à¤Ç»ØÄꤵ¤ì¤¿·Á¼°¤Ë½¾¤Ã¤Æ¡¢¸ø³«¸°¤Î DER É乿²½¤òɽ¸½¤·¤Þ¤¹¡£ ¤³¤Î¥¯¥é¥¹¤ÎgetEncoded¥á¥½¥Ã¥É¤Ï¡¢X.509 ɸ½à¤Ë½¾¤Ã¤ÆÉ乿²½¤µ¤ì¤¿¸°¤Î¥Ð¥¤¥È¤òÊÖ¤·¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤ÎgetFormat¥á¥½¥Ã¥É¤Ï¡¢Ê¸»úÎó X.509 ¤òÊÖ¤·¤Þ¤¹¡£
KeyFactory ¥¯¥é¥¹KeyFactory¥¯¥é¥¹¤Ï¡¢ÉÔÆ©ÌÀ¤Ê°Å¹æ²½¸° (Key·¿) ¤È¡¢¸°»ÅÍÍ (ÇØ¸å¤Î¸°¥Ç¡¼¥¿¤ÎÆ©ÌÀ¤Êɽ¸½) ´Ö¤ÎÊÑ´¹¤òÄ󶡤¹¤ëÌÜŪ¤ÇÀ߷פµ¤ì¤¿¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ç¤¹¡£¸°¥Õ¥¡¥¯¥È¥ê¤Ï¡¢ÁÐÊý¸þÀ¤¬¤¢¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤³¤ì¤Ë¤è¤Ã¤Æ¡¢Í¿¤¨¤é¤ì¤¿¸°»ÅÍÍ (¸°¤Î¥Ç¡¼¥¿) ¤«¤éÉÔÆ©ÌÀ¤Ê¸°¥ª¥Ö¥¸¥§¥¯¥È¤ò¹½ÃÛ¤¹¤ë¤³¤È¤â¡¢¸°¥ª¥Ö¥¸¥§¥¯¥È¤ÎÇØ¸å¤Î¸°¥Ç¡¼¥¿¤òŬÀڤʷÁ¼°¤Ç¼èÆÀ¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
Ʊ°ì¤Î¸°¤ËÂФ·¤Æ¡¢Ê£¿ô¤Î¸ß´¹À¤Î¤¢¤ë¸°»ÅÍͤò¸ºß¤µ¤»¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢DSA ¸ø³«¸°¤Ï¡¢¥³¥ó¥Ý¡¼¥Í¥ó¥È
y¡¢p¡¢q¡¢¤ª¤è¤Óg¤Ë¤è¤Ã¤Æ»ØÄꤹ¤ë¤³¤È¤â (DSAPublicKeySpec¤ò»²¾È)¡¢X.509 ɸ½à¤Ë½¾¤Ã¤Æ DER É乿²½¤ò»È¤Ã¤Æ»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹ (X509EncodedKeySpec¤ò»²¾È)¡£¸°¥Õ¥¡¥¯¥È¥ê¤Ï¡¢¸ß´¹À¤Î¤¢¤ë¸°»ÅÍÍ´Ö¤ÎÊÑ´¹¤Ë»ÈÍѤǤ¤Þ¤¹¡£¸ß´¹À¤Î¤¢¤ë¸°»ÅÍÍ´Ö¤ÎÊÑ´¹¤Ç¤Ï¡¢¸°¤Î¹½Ê¸²òÀϤ¬¹Ô¤ï¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢
X509EncodedKeySpec¤òDSAPublicKeySpec¤ËÊÑ´¹¤¹¤ë¾ì¹ç¤Ï¡¢´ðËÜŪ¤ËÉ乿²½¤µ¤ì¤¿¸°¤ò¥³¥ó¥Ý¡¼¥Í¥ó¥Èñ°Ì¤Ç²ò¼á½èÍý¤·¤Þ¤¹¡£Îã¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¸°»ÅÍͤª¤è¤ÓKeyFactory¤ò»È¤Ã¤¿½ð̾¤ÎÀ¸À®¤È¸¡¾Ú¡×¤ÎºÇ¸å¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
KeyFactory¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®¤É¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Î¾ì¹ç¤âƱÍͤˡ¢
KeyFactory¥¯¥é¥¹¤Î static ¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥ÉgetInstance¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢ÆÃÄê·¿¤Î¸°¥¢¥ë¥´¥ê¥º¥à¤ÎKeyFactory¥ª¥Ö¥¸¥§¥¯¥È¤ò³ÍÆÀ¤·¤Þ¤¹¡£
static KeyFactory getInstance(String algorithm)¸Æ¤Ó½Ð¤·Â¦¤Ï¡¢Ç¤°Õ¤Ç¥×¥í¥Ð¥¤¥À¤Þ¤¿¤Ï
Ãí: ¥¢¥ë¥´¥ê¥º¥à̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£
Provider¥¯¥é¥¹¤Î̾Á°¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À̾¤ò»ØÄꤹ¤ë¤È¡¢Í׵᤹¤ë¸°¥Õ¥¡¥¯¥È¥ê¤Î¼ÂÁõ¤ò³Î¼Â¤Ë»ØÄê¥×¥í¥Ð¥¤¥À¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£static KeyFactory getInstance(String algorithm, String provider) static KeyFactory getInstance(String algorithm, Provider provider)¸°»ÅÍÍ¤È Key ¥ª¥Ö¥¸¥§¥¯¥È´Ö¤ÎÊÑ´¹
¸ø³«¸°ÍѤθ°»ÅÍͤ¬¤¢¤ë¾ì¹ç¤Ï¡¢
generatePublic¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¡¢¤½¤Î»ÅÍͤ«¤éÉÔÆ©ÌÀ¤ÊPublicKey¥ª¥Ö¥¸¥§¥¯¥È¤ò¼èÆÀ¤Ç¤¤Þ¤¹¡£PublicKey generatePublic(KeySpec keySpec)ƱÍͤˡ¢Èó¸ø³«¸°ÍѤθ°»ÅÍͤ¬¤¢¤ë¾ì¹ç¤Ï¡¢
generatePrivate¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¡¢¤½¤Î»ÅÍͤ«¤éÉÔÆ©ÌÀ¤ÊPrivateKey¥ª¥Ö¥¸¥§¥¯¥È¤ò¼èÆÀ¤Ç¤¤Þ¤¹¡£PrivateKey generatePrivate(KeySpec keySpec)Key ¥ª¥Ö¥¸¥§¥¯¥È¤È¸°»ÅÍÍ´Ö¤ÎÊÑ´¹
Key¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¢¤ë¾ì¹ç¤Ï¡¢getKeySpec¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¡¢Âбþ¤¹¤ë¸°»ÅÍͤò¼èÆÀ¤Ç¤¤Þ¤¹¡£KeySpec getKeySpec(Key key, Class keySpec)keySpec¤Ï¡¢¸°¤Î¥Ç¡¼¥¿¤¬ÊÖ¤µ¤ì¤ë¤Ù¤»ÅÍÍ¥¯¥é¥¹¤ò¼±Ê̤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢DSAPublicKeySpec.class¤Ï¡¢¸°¤Î¥Ç¡¼¥¿¤¬DSAPublicKeySpec¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ËÊÖ¤µ¤ì¤ë¤Ù¤¤Ç¤¢¤ë¤³¤È¤ò»Ø¼¨¤·¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢Îã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
CertificateFactory ¥¯¥é¥¹CertificateFactory¥¯¥é¥¹¤Ï¡¢¾ÚÌÀ½ñ¥Õ¥¡¥¯¥È¥ê¤Îµ¡Ç½¤òÄêµÁ¤¹¤ë¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ç¤¹¡£¾ÚÌÀ½ñ¥Õ¥¡¥¯¥È¥ê¤Ï¡¢¾ÚÌÀ½ñ¤ª¤è¤Ó¾ÚÌÀ½ñ¤Î¼è¤ê¾Ã¤·¥ê¥¹¥È (CRL) ¥ª¥Ö¥¸¥§¥¯¥È¤ò¤½¤ÎÉ乿²½¤«¤éÀ¸À®¤¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£X.509 ¤Î¾ÚÌÀ½ñ¥Õ¥¡¥¯¥È¥ê¤Ï¡¢
java.security.cert.X509Certificate¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¢¤ë¾ÚÌÀ½ñ¡¢¤ª¤è¤Ójava.security.cert.X509CRL¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¢¤ë CRL ¤òÊÖ¤·¤Þ¤¹¡£
CertificateFactory¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®¤É¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Î¾ì¹ç¤âƱÍͤˡ¢
CertificateFactory¥¯¥é¥¹¤Î static ¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥ÉgetInstance¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢ÆÃÄê·¿¤Î¾ÚÌÀ½ñ¤Þ¤¿¤Ï CRL ¤ÎCertificateFactory¥ª¥Ö¥¸¥§¥¯¥È¤ò³ÍÆÀ¤·¤Þ¤¹¡£
static CertificateFactory getInstance(String type)¸Æ¤Ó½Ð¤·Â¦¤Ï¡¢Ç¤°Õ¤Ç¥×¥í¥Ð¥¤¥À¤Þ¤¿¤Ï
Ãí: ·¿¤Î̾Á°¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£
Provider¥¯¥é¥¹¤Î̾Á°¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À̾¤ò»ØÄꤹ¤ë¤È¡¢Í׵᤹¤ë¾ÚÌÀ½ñ¥Õ¥¡¥¯¥È¥ê¤Î¼ÂÁõ¤ò³Î¼Â¤Ë»ØÄê¥×¥í¥Ð¥¤¥À¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£static CertificateFactory getInstance(String type, String provider) static CertificateFactory getInstance(String type, Provider provider)¾ÚÌÀ½ñ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®
¾ÚÌÀ½ñ¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¡¢ÆþÎÏ¥¹¥È¥ê¡¼¥à¤«¤éÆÉ¤ß¹þ¤Þ¤ì¤¿¥Ç¡¼¥¿¤ò»È¤Ã¤Æ½é´ü²½¤¹¤ë¤Ë¤Ï¡¢generateCertificate¥á¥½¥Ã¥É¤ò»È¤¤¤Þ¤¹¡£ÆÃÄê¤ÎÆþÎÏ¥¹¥È¥ê¡¼¥à¤«¤éÆÉ¤ß¹þ¤Þ¤ì¤¿¾ÚÌÀ½ñ¤Î¥³¥ì¥¯¥·¥ç¥ó¥Ó¥å¡¼ (¶õ¤Î²ÄǽÀ¤â¤¢¤ë) ¤òÊÖ¤¹¤Ë¤Ï¡¢final Certificate generateCertificate(InputStream inStream)generateCertificates¥á¥½¥Ã¥É¤ò»È¤¤¤Þ¤¹¡£final Collection generateCertificates(InputStream inStream)CRL ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®
(CRL) ¾ÚÌÀ½ñ¤Î¼è¤ê¾Ã¤·¥ê¥¹¥È¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¡¢ÆþÎÏ¥¹¥È¥ê¡¼¥à¤«¤éÆÉ¤ß¹þ¤Þ¤ì¤¿¥Ç¡¼¥¿¤ò»È¤Ã¤Æ½é´ü²½¤¹¤ë¤Ë¤Ï¡¢generateCRL¥á¥½¥Ã¥É¤ò»È¤¤¤Þ¤¹¡£ÆÃÄê¤ÎÆþÎÏ¥¹¥È¥ê¡¼¥à¤«¤éÆÉ¤ß¹þ¤Þ¤ì¤¿ CRL ¤Î¥³¥ì¥¯¥·¥ç¥ó¥Ó¥å¡¼ (¶õ¤Î²ÄǽÀ¤â¤¢¤ë) ¤òÊÖ¤¹¤Ë¤Ï¡¢final CRL generateCRL(InputStream inStream)generateCRLs¥á¥½¥Ã¥É¤ò»È¤¤¤Þ¤¹¡£final Collection generateCRLs(InputStream inStream)
CertPath¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®CertPath¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¡¢¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÆþÎÏ¥¹¥È¥ê¡¼¥à¤«¤éÆÉ¤ß¹þ¤Þ¤ì¤¿¥Ç¡¼¥¿¤ò»È¤Ã¤Æ½é´ü²½¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤¤¤º¤ì¤«¤ÎgenerateCertPath¥á¥½¥Ã¥É¤ò»ÈÍѤ·¤Þ¤¹ (ɬÍפ˱þ¤¸¤Æ¡¢¥Ç¡¼¥¿¤ËÂФ·¤Æ»ÈÍѤ¹¤ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤹ¤ë)¡£final CertPath generateCertPath(InputStream inStream) final CertPath generateCertPath(InputStream inStream, String encoding)CertPath¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¡¢¾ÚÌÀ½ñ¤Î¥ê¥¹¥È¤ò»ÈÍѤ·¤Æ½é´ü²½¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥á¥½¥Ã¥É¤ò»ÈÍѤ·¤Þ¤¹¡£¾ÚÌÀ½ñ¥Õ¥¡¥¯¥È¥ê¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëfinal CertPath generateCertPath(List certificates)CertPath¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢getCertPathEncodings¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£½é¤á¤Ë¥Ç¥Õ¥©¥ë¥È¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤¬°ìÍ÷ɽ¼¨¤µ¤ì¤Þ¤¹¡£final Iterator getCertPathEncodings()
KeyPair ¥¯¥é¥¹
KeyPair¥¯¥é¥¹¤Ï¸°¤Î¥Ú¥¢ (¸ø³«¸°¤ÈÈó¸ø³«¸°) ¤Î´Êñ¤Ê¥Û¥ë¥À¡¼¤Ç¤¹¡£¤³¤ì¤Ë¤Ï 2 ¤Ä¤Î public ¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£1 ¤Ä¤ÏÈó¸ø³«¸°¤òÊÖ¤·¡¢¤â¤¦ 1 ¤Ä¤Ï¸ø³«¸°¤òÊÖ¤·¤Þ¤¹¡£PrivateKey getPrivate() PublicKey getPublic()
KeyPairGenerator ¥¯¥é¥¹
KeyPairGenerator¥¯¥é¥¹¤Ï¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ç¡¢¸ø³«¸°¤ÈÈó¸ø³«¸°¤Î¥Ú¥¢¤ÎÀ¸À®¤Ë»È¤¤¤Þ¤¹¡£¸°¤Î¥Ú¥¢¤ÎÀ¸À®ÊýË¡¤Ë¤Ï¡¢¥¢¥ë¥´¥ê¥º¥àÆÈΩ·¿¤È¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤Î 2 ¤Ä¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î 2 ¤Ä¤ÎÍ£°ì¤ÎÁê°ãÅÀ¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½¤Ë¤¢¤ê¤Þ¤¹¡£
°Ê²¼¤Î¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·Îã¤Ï¡¢Îã¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
KeyPairGenerator¤ÎÀ¸À®¤¹¤Ù¤Æ¤Î¸°¤Î¥Ú¥¢¤Ï¡¢¤Þ¤ººÇ½é¤Ë
KeyPairGenerator¤ò»È¤Ã¤ÆÀ¸À®¤·¤Þ¤¹¡£¤³¤ÎÀ¸À®¤Ï¡¢KeyPairGenerator¤Î°Ê²¼¤Î¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É¤Î¤É¤ì¤« 1 ¤Ä¤ò»È¤Ã¤Æ¼Â¹Ô¤·¤Þ¤¹¡£
static KeyPairGenerator getInstance(String algorithm) static KeyPairGenerator getInstance(String algorithm, String provider) static KeyPairGenerator getInstance(String algorithm, Provider provider)
Ãí: ¥¢¥ë¥´¥ê¥º¥à̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£
KeyPairGenerator¤Î½é´ü²½ÆÃÄê¤Î¥¢¥ë¥´¥ê¥º¥àÍѤθ°¤Î¥Ú¥¢¤Î¥¸¥§¥Í¥ì¡¼¥¿¤Ï¡¢¤½¤Î¥¢¥ë¥´¥ê¥º¥à¤Ç»È¤¦¤³¤È¤¬¤Ç¤¤ë¸ø³«¸°¤Þ¤¿¤ÏÈó¸ø³«¸°¤òºîÀ®¤·¤Þ¤¹¡£¤Þ¤¿¡¢¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤Î¥Ñ¥é¥á¡¼¥¿¤òÀ¸À®¤µ¤ì¤¿³Æ¸°¤Ë´ØÏ¢ÉÕ¤±¤Þ¤¹¡£¤Þ¤º¡¢¸°¤Î¥Ú¥¢¤ò½é´ü²½¤·¤Æ¤«¤é¤Ç¤Ê¤±¤ì¤Ð¡¢¸°¤Î¥Ú¥¢¤Ï¸°¤òÀ¸À®¤Ç¤¤Þ¤»¤ó¡£¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢¥¢¥ë¥´¥ê¥º¥àÆÈΩ·¿¤Î½é´ü²½¤Ç½½Ê¬¤Ç¤¹¡£¤¿¤À¤·¡¢¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤Î½é´ü²½¤ò»ÈÍѤ¹¤ëɬÍפΤ¢¤ë¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£
¥¢¥ë¥´¥ê¥º¥àÆÈΩ·¿¤Î½é´ü²½
¤¹¤Ù¤Æ¤Î¸°¥¸¥§¥Í¥ì¡¼¥¿¤Ï¡¢¥¡¼¥µ¥¤¥º¤ª¤è¤ÓÍð¿ô¤ÎȯÀ¸¸»¤Î³µÇ°¤ò¶¦Í¤·¤Þ¤¹¡£¥¡¼¥µ¥¤¥º¤Ï¡¢¥¢¥ë¥´¥ê¥º¥à¤´¤È¤Ë²ò¼á¤¬°Û¤Ê¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢DSA ¥¢¥ë¥´¥ê¥º¥à¤Î¾ì¹ç¡¢¥¡¼¥µ¥¤¥º¤Ï¥â¥¸¥å¥é¥¹¤ÎŤµ¤È°ìÃפ·¤Þ¤¹¡£ÆÃÄê¤Î¥¢¥ë¥´¥ê¥º¥à¤Î¥¡¼¥µ¥¤¥º¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖÉÕÏ¿ B: ¥¢¥ë¥´¥ê¥º¥à¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
ÉáÊ×Ū¤Ë¶¦Í¤µ¤ì¤ë¤³¤ì¤é 2 ¤Ä¤Î°ú¿ô¤Î·¿¤ò¤È¤ë
initialize¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢void initialize(int keysize, SecureRandom random)keysize°ú¿ô¤À¤±¤ò¤È¤ê¡¢¥·¥¹¥Æ¥à¤¬Ä󶡤¹¤ëÍð¿ô¤ÎȯÀ¸¸»¤ò»ÈÍѤ¹¤ëinitialize¥á¥½¥Ã¥É¤â¤¢¤ê¤Þ¤¹¡£void initialize(int keysize)¾å¤Î¥¢¥ë¥´¥ê¥º¥àÆÈΩ·¿
initialize¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤È¤¤Ï¡¢¤½¤Î¾¤Î¥Ñ¥é¥á¡¼¥¿¤Ï»ØÄꤷ¤Ê¤¤¤¿¤á¡¢³Æ¸°¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤ë¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤Î¥Ñ¥é¥á¡¼¥¿¤¬¤¢¤ë¾ì¹ç¤Ï¡¢¤½¤Î¥Ñ¥é¥á¡¼¥¿¤Î½èÍý¤Ï¡¢¥×¥í¥Ð¥¤¥À¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£¥¢¥ë¥´¥ê¥º¥à¤¬ DSA ¥¢¥ë¥´¥ê¥º¥à¤Ç¡¢¥â¥¸¥å¥é¥¹¤Î¥µ¥¤¥º (¥¡¼¥µ¥¤¥º) ¤¬ 512¡¢768¡¢¤Þ¤¿¤Ï 1024 ¤Î¾ì¹ç¤Ï¡¢SUN ¥×¥í¥Ð¥¤¥À¤Ï
p¡¢q¡¢¤ª¤è¤Óg¥Ñ¥é¥á¡¼¥¿ÍѤ˻öÁ°¤Ë·×»»¤·¤¿Ãͤò»È¤¤¤Þ¤¹¡£¥â¥¸¥å¥é¥¹¤Î¥µ¥¤¥º¤¬¾åµ¤ÎÃͤΠ1 ¤Ä¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢SUN ¥×¥í¥Ð¥¤¥À¤Ï¡¢¿·¤·¤¤¥Ñ¥é¥á¡¼¥¿¤Î¥»¥Ã¥È¤òºîÀ®¤·¤Þ¤¹¡£¤³¤ì¤é¤Î 3 ¤Ä¤Î¥â¥¸¥å¥é¥¹¥µ¥¤¥º°Ê³°¤Î¡¢»öÁ°¤Ë·×»»¤µ¤ì¤¿¥Ñ¥é¥á¡¼¥¿¥»¥Ã¥È¤ò»ý¤Ä¥×¥í¥Ð¥¤¥À¤¬Â¸ºß¤¹¤ë²ÄǽÀ¤â¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢»öÁ°¤Ë·×»»¤µ¤ì¤¿¥Ñ¥é¥á¡¼¥¿¤¬¤Ê¤¯¡¢¾ï¤Ë¿·¤·¤¤¥Ñ¥é¥á¡¼¥¿¥»¥Ã¥È¤òºîÀ®¤¹¤ë¥×¥í¥Ð¥¤¥À¤¬Â¸ºß¤¹¤ë²ÄǽÀ¤â¤¢¤ê¤Þ¤¹¡£¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¤Î½é´ü²½
¥¢¥ë¥´¥ê¥º¥àÆÃÄê·¿¥Ñ¥é¥á¡¼¥¿¤Î¥»¥Ã¥È¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¾õ¶·¤Ç¤Ï (DSA ¤Î¡Ö¥³¥ß¥å¥Ë¥Æ¥£¥Ñ¥é¥á¡¼¥¿¡×¤Ê¤É)¡¢
AlgorithmParameterSpec°ú¿ô¤ò¤È¤ëinitialize¥á¥½¥Ã¥É¤¬ 2 ¤Ä¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¦¤Á¤Î°ìÊý¤ÏSecureRandom°ú¿ô¤â¤È¤ê¤Þ¤¹¤¬¡¢Â¾Êý¤Ç¤Ï¡¢Íð¿ô¤ÎȯÀ¸¸»¤Ï¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¤Þ¤¹¡£¾ÜºÙ¤ÏÎã¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£void initialize(AlgorithmParameterSpec params, SecureRandom random) void initialize(AlgorithmParameterSpec params)¸°¤Î¥Ú¥¢¤ÎÀ¸À®
¸°¤Î¥Ú¥¢¤ÎÀ¸À®¼ê½ç¤Ï¡¢½é´ü²½ (¤ª¤è¤Ó¥¢¥ë¥´¥ê¥º¥à) ¤Ë´Ø·¸¤Ê¤¯¡¢¾ï¤ËƱ¤¸¤Ç¤¹¡£É¬¤º
KeyPairGenerator¤«¤é°Ê²¼¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£KeyPair generateKeyPair()generateKeyPair¤ò¸Æ¤Ó½Ð¤¹¤¿¤Ó¤Ë¡¢°Û¤Ê¤ë¸°¤Î¥Ú¥¢¤¬ºî¤é¤ì¤Þ¤¹¡£
¡Ö¥¡¼¥¹¥È¥¢¡×¤È¸Æ¤Ð¤ì¤ë¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ï¡¢¸°¤ª¤è¤Ó¾ÚÌÀ½ñ¤Î¥ê¥Ý¥¸¥È¥ê¤ò´ÉÍý¤¹¤ë¤¿¤á¤Ë»ÈÍѤǤ¤Þ¤¹¡£¡Ö¾ÚÌÀ½ñ¡×¤Ï¡¢¤¢¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤«¤é¤Î¥Ç¥¸¥¿¥ë¤Ë½ð̾¤µ¤ì¤¿Ê¸¤Ç¡¢Ê̤Τ¢¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤Î¸ø³«¸°¤ËÆÃÄê¤ÎÃͤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Î¾ì½ê
¥¡¼¥¹¥È¥¢¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥æ¡¼¥¶¤Î¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¤Î
.keystore¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£¥æ¡¼¥¶¤Î¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢user.home ¥·¥¹¥Æ¥à¥×¥í¥Ñ¥Æ¥£¤Ë¤è¤Ã¤Æ·è¤Þ¤ê¤Þ¤¹¡£Solaris ¥·¥¹¥Æ¥à¤Î¾ì¹ç¡¢user.home ¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¥æ¡¼¥¶¤Î¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£Win32 ¥·¥¹¥Æ¥à¤Î¾ì¹ç¡¢¥æ¡¼¥¶Ì¾¤¬¡ÖuName¡×¤Î¾ì¹ç¡¢user.home ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï¼¡¤Î¤è¤¦¤ËÀßÄꤵ¤ì¤Þ¤¹¡£
- C:\Winnt\Profiles\uName - ¥Þ¥ë¥Á¥æ¡¼¥¶ Windows NT ¥·¥¹¥Æ¥à¤Î¾ì¹ç
- C:\Windows\Profiles\uName - ¥Þ¥ë¥Á¥æ¡¼¥¶ Windows 95/98/2000 ¥·¥¹¥Æ¥à¤Î¾ì¹ç
- C:\Windows - ¥·¥ó¥°¥ë¥æ¡¼¥¶ Windows 95/98/2000 ¥·¥¹¥Æ¥à¤Î¾ì¹ç
¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ
KeyStore¥¯¥é¥¹¤Ï¡¢¥¡¼¥¹¥È¥¢Æâ¤Î¾ðÊó¤Ø¤Î¥¢¥¯¥»¥¹¤ª¤è¤Ó¾ðÊó¤ÎÊѹ¹¤ò¹Ô¤¦¤¿¤á¤Î¡¢ÌÀ³Î¤ËÄêµÁ¤µ¤ì¤¿¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ󶡤·¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Î¸ÇÄê¼ÂÁõ¤È¤·¤Æ¤Ï¡¢¤½¤ì¤¾¤ì¤¬ÆÃÄê¤Î¡Ö¥¿¥¤¥×¡×¤Î¥¡¼¥¹¥È¥¢¤òÂоݤȤ¹¤ëÊ£¿ô¤Î°Û¤Ê¤ë¼ÂÁõ¤¬Â¸ºß²Äǽ¤Ç¤¹¡£¥¡¼¥¹¥È¥¢¤òÍøÍѤ¹¤ë¥³¥Þ¥ó¥É¹Ô¥Ä¡¼¥ë¤Ë¤Ï¡¢
keytool¤Èjarsigner¤Î 2 ¤Ä¤¬¤¢¤ê¤Þ¤¹¡£ ¤Þ¤¿¡¢GUI ¥Ù¡¼¥¹¤Îpolicytool¤È¤¤¤¦¥Ä¡¼¥ë¤â¤¢¤ê¤Þ¤¹¡£¤µ¤Þ¤¶¤Þ¤Ê¥½¡¼¥¹¤Î¥³¡¼¥É¤ËÂФ·¤Æ (¥·¥¹¥Æ¥à¥ê¥½¡¼¥¹¤Ø¤Î) ¥¢¥¯¥»¥¹¸¢¤ò»ØÄꤹ¤ë¥Ý¥ê¥·¡¼¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ë¾ì¹ç¡¢¤³¤Î¥Ä¡¼¥ë¤ÏPolicy¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¼ÂÁõ¤Ë¤è¤Ã¤Æ¤â»È¤ï¤ì¤Þ¤¹¡£KeyStore¤Ï public ¤È¤·¤Æ»ÈÍѲÄǽ¤Ê¤Î¤Ç¡¢SDK ¥æ¡¼¥¶¤ÏKeyStore¤ò»È¤Ã¤¿¤Û¤«¤Î¥»¥¥å¥ê¥Æ¥£¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤âºîÀ®¤Ç¤¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Ë¤Ï¡¢Sun ¤¬Ä󶡤¹¤ëÁȤ߹þ¤ß¤Î¥Ç¥Õ¥©¥ë¥È¤Î¼ÂÁõ¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¡¢JKS ¤È¤¤¤¦Ì¾Á°¤ÎÆÈ¼«¤Î¥¡¼¥¹¥È¥¢¥¿¥¤¥× (·Á¼°) ¤òÍøÍѤ¹¤ë¤â¤Î¤Ç¡¢¥¡¼¥¹¥È¥¢¤ò¥Õ¥¡¥¤¥ë¤È¤·¤Æ¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Î¼ÂÁõ¤Ç¤Ï¡¢¸Ä¡¹¤ÎÈó¸ø³«¸°¤Ï¸ÄÊ̤Υѥ¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸ¤ì¡¢¥¡¼¥¹¥È¥¢Á´ÂΤδ°Á´À¤â (Èó¸ø³«¸°¤È¤ÏÊ̤Î) ¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸ¤ì¤Þ¤¹¡£
¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤Ï¡¢¥×¥í¥Ð¥¤¥À¥Ù¡¼¥¹¤Ç¤¹¡£¶ñÂÎŪ¤Ë¤Ï¡¢
KeyStore¤¬Ä󶡤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¡¢Service Provider Interface (SPI) ¤È¤¤¤¦·Á¤Ç¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Âбþ¤¹¤ëKeystoreSpiÃê¾Ý¥¯¥é¥¹ (¤³¤ì¤âjava.security¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë) ¤¬¤¢¤ê¡¢¤³¤Î¥¯¥é¥¹¤¬ SPI ¤Î¥á¥½¥Ã¥É¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤é¤Î¥á¥½¥Ã¥É¤Ï¡¢¡Ö¥×¥í¥Ð¥¤¥À¡×¤¬¼ÂÁõ¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¡Ö¥×¥í¥Ð¥¤¥À¡×¤È¤Ï¡¢Java 2 SDK Security API ¤Ë¤è¤Ã¤Æ¥¢¥¯¥»¥¹²Äǽ¤Ê¥µ¡¼¥Ó¥¹¤Î¥µ¥Ö¥»¥Ã¥È¤Î¸ÇÄê¼ÂÁõ¤òÄ󶡤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤Þ¤¿¤Ï¥Ñ¥Ã¥±¡¼¥¸¤Î¥»¥Ã¥È¤Î¤³¤È¤Ç¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤òÄ󶡤¹¤ë¤Ë¤Ï¡¢¡ÖJava(TM) °Å¹æ²½¥¢¡¼¥¥Æ¥¯¥Á¥ãÍÑ¥×¥í¥Ð¥¤¥À¤Î¼ÂÁõÊýË¡¡×¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬¡Ö¥×¥í¥Ð¥¤¥À¡×¤ò¼ÂÁõ¤·¡¢KeystoreSpi¥µ¥Ö¥¯¥é¥¹¤Î¼ÂÁõ¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢
KeyStore¥¯¥é¥¹¤ÎgetInstance¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É¤ò»È¤¦¤³¤È¤Ç¡¢¤µ¤Þ¤¶¤Þ¤Ê¥×¥í¥Ð¥¤¥À¤«¤é°Û¤Ê¤ë¡Ö¥¿¥¤¥×¡×¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤òÁªÂò¤Ç¤¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤Ï¡¢¥¡¼¥¹¥È¥¢¾ðÊó¤Î³ÊǼ·Á¼°¤È¥Ç¡¼¥¿·Á¼°¤òÄêµÁ¤¹¤ë¤È¤È¤â¤Ë¡¢¥¡¼¥¹¥È¥¢Æâ¤ÎÈó¸ø³«¸°¤È¥¡¼¥¹¥È¥¢¼«ÂΤδ°Á´À¤òÊݸ¤ë¤¿¤á¤Ë»È¤ï¤ì¤ë¥¢¥ë¥´¥ê¥º¥à¤òÄêµÁ¤·¤Þ¤¹¡£°Û¤Ê¤ë¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤Ë¤Ï¡¢¸ß´¹À¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥¡¼¥¹¥È¥¢¤Î¥Ç¥Õ¥©¥ë¥È¥¿¥¤¥×¤Ï¡¢SUN ¥×¥í¥Ð¥¤¥À¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¤ë¥¡¼¥¹¥È¥¢¼ÂÁõÀìÍѤΠjks ¤Ç¤¹¡£¤³¤ì¤Ï¡¢¥»¥¥å¥ê¥Æ¥£¥×¥í¥Ñ¥Æ¥£¥Õ¥¡¥¤¥ëÆâ¤Î¼¡¤Î¹Ô¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£
¥Ä¡¼¥ë¤ª¤è¤Ó¤Û¤«¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¥Ç¥Õ¥©¥ë¥È°Ê³°¤Î¥¡¼¥¹¥È¥¢¼ÂÁõ¤òÍøÍѤ¹¤ë¤Ë¤Ï¡¢¤³¤Î¹Ô¤òÊѹ¹¤·¤ÆÊ̤Υ¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¤ò»ØÄꤷ¤Þ¤¹¡£¤Þ¤¿¡¢ºîÀ®¤¹¤ë¥Ä¡¼¥ë¤ª¤è¤Ó¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥æ¡¼¥¶¤Ë¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤ò»ØÄꤵ¤»¤Æ¡¢¤½¤ÎÃͤò¥¡¼¥¹¥È¥¢¤Îkeystore.type=jksgetInstance¥á¥½¥Ã¥É¤ËÅϤ¹¤È¤¤¤¦ÊýË¡¤â¤¢¤ê¤Þ¤¹¡£ºÇ½é¤ÎÊýË¡¤ÎÎã¤ò¼¡¤Ë¼¨¤·¤Þ¤¹¡£
pkcs12¤È¤¤¤¦¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¼ÂÁõ¤òÄ󶡤¹¤ë¥×¥í¥Ð¥¤¥À¥Ñ¥Ã¥±¡¼¥¸¤¬¤¢¤ë¾ì¹ç¤Ï¡¢¤³¤Î¹Ô¤ò¼¡¤Î¤è¤¦¤ËÊѹ¹¤·¤Þ¤¹¡£keystore.type=pkcs12
Ãí: ¥¡¼¥¹¥È¥¢¤Î¥¿¥¤¥×¤Î»ØÄê¤Ç¤Ï¡¢Âçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢JKS ¤È jks ¤ÏƱ¤¸¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£
KeyStore¥¯¥é¥¹KeyStore¥¯¥é¥¹¤Ï¡¢¥¡¼¥¹¥È¥¢Æâ¤Î¾ðÊó¤Ø¤Î¥¢¥¯¥»¥¹¤ª¤è¤Ó¾ðÊó¤ÎÊѹ¹¤ò¹Ô¤¦¤¿¤á¤ÎÌÀ³Î¤ËÄêµÁ¤µ¤ì¤¿¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ󶡤¹¤ë¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ç¤¹¡£¤³¤Î¥¯¥é¥¹¤Ï¡¢¥á¥â¥êÆâ¤Î¸°¤ª¤è¤Ó¾ÚÌÀ½ñ¤Î¥³¥ì¥¯¥·¥ç¥ó¤òɽ¤¹¤â¤Î¤Ç¡¢¼¡¤Î 2 ¼ïÎà¤Î¥¨¥ó¥È¥ê¤ò´ÉÍý¤·¤Þ¤¹¡£
¥¡¼¥¹¥È¥¢Æâ¤Î³Æ¥¨¥ó¥È¥ê¤Ï¡¢¡ÖÊÌ̾¡×ʸ»úÎó¤Ë¤è¤Ã¤Æ¼±Ê̤µ¤ì¤Þ¤¹¡£Èó¸ø³«¸°¤È¤½¤ì¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¾ÚÌÀÏ¢º¿¤Î¾ì¹ç¤Ï¡¢¤³¤ì¤é¤Îʸ»úÎó¤Ï¡¢¥¨¥ó¥Æ¥£¥Æ¥£¼«ÂΤ¬Ç§¾Ú¤¹¤ë¤È¤¤¤¦¤è¤¦¤Ë¡¢ÊýË¡Ê̤˶èÊ̤µ¤ì¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤¬°Û¤Ê¤ë¾ÚÌÀ½ñȯ¹Ô¶É¤ò»È¤Ã¤¿¤ê¡¢°Û¤Ê¤ë¸ø³«¸°¥¢¥ë¥´¥ê¥º¥à¤ò»È¤Ã¤¿¤ê¤·¤Æ¡¢¥¨¥ó¥Æ¥£¥Æ¥£¼«ÂΤòǧ¾Ú¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£
- ¸°¥¨¥ó¥È¥ê
¤³¤Î¥¿¥¤¥×¤Î¥¡¼¥¹¥È¥¢¥¨¥ó¥È¥ê¤Ë¤Ï¡¢Èó¾ï¤Ë½ÅÍפʰŹ沽¸°¤Î¾ðÊó¤¬ÊÝ»ý¤µ¤ì¤Þ¤¹¡£¾ðÊó¤Ï¡¢Êݸ¤ì¤¿·Á¼°¤Ç³ÊǼ¤µ¤ì¡¢¸¢¸Â¤Î¤Ê¤¤¥¢¥¯¥»¥¹¤òËɤ®¤Þ¤¹¡£Ä̾¤³¤Î¼ïÎà¤Î¥¨¥ó¥È¥ê¤Ç³ÊǼ¤µ¤ì¤ë¸°¤ÏÈó¸ø³«¸°¤Ç¡¢Âбþ¤¹¤ë¸ø³«¸°¤ò¾ÚÌÀ¤¹¤ë¾ÚÌÀÏ¢º¿¤¬È¼¤¤¤Þ¤¹¡£
Èó¸ø³«¸°¤ª¤è¤Ó¾ÚÌÀÏ¢º¿¤Ï¡¢¥Ç¥¸¥¿¥ë½ð̾¤ò»È¤Ã¤¿¼«¸Êǧ¾ÚÍÑ¤ËÆÃÄê¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤¬»ÈÍѤ·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¥½¥Õ¥È¥¦¥§¥¢ÇÛÉÛÃÄÂΤϡ¢¥ê¥ê¡¼¥¹¤Þ¤¿¤Ï¥é¥¤¥»¥ó¥¹¤¹¤ë¥½¥Õ¥È¥¦¥§¥¢¤Î°ìÉô¤È¤·¤Æ JAR ¥Õ¥¡¥¤¥ë¤Ë¥Ç¥¸¥¿¥ë½ð̾¤òÉÕ¤±¤Þ¤¹¡£
- ¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¥¨¥ó¥È¥ê
¤³¤Î¼ïÎà¤Î¥¨¥ó¥È¥ê¤Ë¤Ï¡¢Ê̤ÎÁÈ¿¥¤Ë°¤¹¤ëñ°ì¤Î¸ø³«¸°¤¬´Þ¤Þ¤ì¡¢¡Ö¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¡×¤È¸Æ¤Ð¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥¡¼¥¹¥È¥¢¤Î½êͼԤ¬¡¢¾ÚÌÀ½ñÆâ¤Î¸ø³«¸°¤¬¼ÂºÝ¤Ë¾ÚÌÀ½ñ¤Î¡ÖÈïǧ¾Ú¼Ô¡×(½êͼÔ) ¤Ë¤è¤Ã¤Æ¼±Ê̤µ¤ì¤¿¥¢¥¤¥Ç¥ó¥Æ¥£¥Æ¥£¤Ë°¤¹¤ë¤³¤È¤ò¿®Íꤹ¤ë¤¿¤á¤Ç¤¹¡£
¤³¤Î¼ïÎà¤Î¥¨¥ó¥È¥ê¤Ï¡¢¤Û¤«¤ÎÁÈ¿¥¤Îǧ¾Ú¤Ë»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¥¡¼¥¹¥È¥¢¤¬»ý³À¤¬¤¢¤ë¤«¤É¤¦¤«¡¢¤ª¤è¤Ó»ý³À¤¬¤¢¤ë¾ì¹ç¤Ë»È¤ï¤ì¤ëµ¡¹½¤Ï¡¢¤³¤³¤Ç¤Ï»ØÄꤵ¤ì¤Þ¤»¤ó¡£¤³¤Îµ¬Â§¤Ë¤è¤ê¡¢½ÅÍ×¤Ê (ÈëÌ©¤Þ¤¿¤ÏÈó¸ø³«) ¸°¤òÊݸ¤ë¤¿¤á¤Î¤µ¤Þ¤¶¤Þ¤Êµ»½Ñ¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥¹¥Þ¡¼¥È¥«¡¼¥É¤Þ¤¿¤Ï¤½¤Î¾¤ÎÅý¹ç°Å¹æ²½¥¨¥ó¥¸¥ó (SafeKeyper) ¤ò»È¤¦¤³¤È¤â 1 ¤Ä¤ÎÊýË¡¤Ç¤¹¡£¤Þ¤¿¡¢¥Õ¥¡¥¤¥ë¤Ê¤É¤Î¤è¤êñ½ã¤Êµ¡¹½¤ò¤µ¤Þ¤¶¤Þ¤Ê·Á¼°¤Ç»È¤¦¤³¤È¤â¤Ç¤¤Þ¤¹¡£
¼çÍפÊ
KeyStore¥á¥½¥Ã¥É¤ò°Ê²¼¤ÇÀâÌÀ¤·¤Þ¤¹¡£
KeyStore¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®¤Û¤«¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤ÈƱÍͤˡ¢
KeyStore¥ª¥Ö¥¸¥§¥¯¥È¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢KeyStore¥¯¥é¥¹¤ÎgetInstancestatic ¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
static KeyStore getInstance(String type)¸Æ¤Ó½Ð¤·Â¦¤Ï¡¢Ç¤°Õ¤Ç¥×¥í¥Ð¥¤¥À¤Þ¤¿¤Ï
Provider¥¯¥é¥¹¤Î̾Á°¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À̾¤ò»ØÄꤹ¤ë¤È¡¢Í׵᤹¤ë¥¿¥¤¥×¤Î¼ÂÁõ¤ò³Î¼Â¤Ë»ØÄê¥×¥í¥Ð¥¤¥À¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£
static KeyStore getInstance(String type, String provider) static KeyStore getInstance(String type, Provider provider)ÆÃÄꥡ¼¥¹¥È¥¢¤Î¥á¥â¥ê¤Ø¤Î¥í¡¼¥É
KeyStore¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¦Á°¤Ë¡¢load¥á¥½¥Ã¥É¤Ë¤è¤Ã¤Æ¥á¥â¥êÆâ¤Ë¼ÂºÝ¤Î¥¡¼¥¹¥È¥¢¥Ç¡¼¥¿¤ò¥í¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥ª¥×¥·¥ç¥ó¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»È¤Ã¤Æ¡¢¥¡¼¥¹¥È¥¢¥Ç¡¼¥¿¤ÎÀ°¹çÀ¤ò¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£¥Ñ¥¹¥ï¡¼¥É¤¬Ä󶡤µ¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢À°¹çÀ¤Î¥Á¥§¥Ã¥¯¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¡£final void load(InputStream stream, char[] password)¶õ¤Î¥¡¼¥¹¥È¥¢¤òºîÀ®¤¹¤ë¤Ë¤Ï¡¢
InputStream°ú¿ô¤È¤·¤Ænull¤òload¥á¥½¥Ã¥É¤ËÅϤ·¤Þ¤¹¡£¥¡¼¥¹¥È¥¢¤ÎÊÌ̾°ìÍ÷¤Î¼èÆÀ
¥¡¼¥¹¥È¥¢¥¨¥ó¥È¥ê¤Ë¤Ï¡¢¤¹¤Ù¤Æ°ì°Õ¤Î¡ÖÊÌ̾¡× (aliases) ¤«¤é¥¢¥¯¥»¥¹¤·¤Þ¤¹¡£
aliases¥á¥½¥Ã¥É¤Ï¡¢¥¡¼¥¹¥È¥¢Æâ¤ÎÊÌ̾¤ÎÎóµó¤òÊÖ¤·¤Þ¤¹¡£final Enumeration aliases()¥¡¼¥¹¥È¥¢¥¨¥ó¥È¥ê¤Î¼ïÎà¤Î·èÄê
¡Ö¥¡¼¥¹¥È¥¢¥¯¥é¥¹¡×¤ÇÀâÌÀ¤·¤¿¤è¤¦¤Ë¡¢¥¡¼¥¹¥È¥¢¤Î¥¨¥ó¥È¥ê¤Ë¤Ï¡¢2 ¼ïÎढ¤ê¤Þ¤¹¡£¼¡¤Î¥á¥½¥Ã¥É¤Ï¡¢Í¿¤¨¤é¤ì¤¿ÊÌ̾¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¤¿¥¨¥ó¥È¥ê¤¬¡¢¤½¤ì¤¾¤ì¸°¤Þ¤¿¤Ï¾ÚÌÀ½ñ¤«¡¢¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¥¨¥ó¥È¥ê¤Ç¤¢¤ë¤³¤È¤ò·èÄꤷ¤Þ¤¹¡£
final boolean isKeyEntry(String alias) final boolean isCertificateEntry(String alias)¥¡¼¥¹¥È¥¢¥¨¥ó¥È¥ê¤ÎÄɲá¢ÀßÄê¡¢¤ª¤è¤Óºï½ü
setCertificateEntry¥á¥½¥Ã¥É¤Ï¡¢¾ÚÌÀ½ñ¤ò»ØÄꤵ¤ì¤¿ÊÌ̾¤Ë³ä¤êÅö¤Æ¤Þ¤¹¡£final void setCertificateEntry(String alias, Certificate cert)alias¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¤½¤ÎÊÌ̾¤Î¤Ä¤¤¤¿¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¥¨¥ó¥È¥ê¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£alias¤¬Â¸ºß¤·¡¢¿®Íê¤Ç¤¤ë¾ÚÌÀ½ñ¤Î¥¨¥ó¥È¥ê¤¬¼±Ê̤µ¤ì¤¿¾ì¹ç¤Ï¡¢¤½¤ì¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¾ÚÌÀ½ñ¤¬cert¤Ë¤è¤Ã¤ÆÃÖ¤´¹¤¨¤é¤ì¤Þ¤¹¡£
setKeyEntry¥á¥½¥Ã¥É¤Ï¡¢alias¤¬¤Þ¤À¸ºß¤·¤Ê¤¤¾ì¹ç¤Ë¡¢¸°¤Î¥¨¥ó¥È¥ê¤ÎÄɲäޤ¿¤ÏÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£¥Ð¥¤¥ÈÇÛÎó¤È¤·¤Æfinal void setKeyEntry(String alias, Key key, char[] password, Certificate[] chain) final void setKeyEntry(String alias, byte[] key, Certificate[] chain)key¤ò¼è¤ë¥á¥½¥Ã¥É¤Ç¤Ï¡¢¤³¤Î°ú¿ô¤Ï¡¢Êݸ¤ì¤¿·Á¼°¤Î¸°¤Î¥Ð¥¤¥È¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢Sun ¥×¥í¥Ð¥¤¥À¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¤ë¥¡¼¥¹¥È¥¢¤Î¼ÂÁõ¤Ç¤Ï¡¢key¥Ð¥¤¥ÈÇÛÎó¤Ï¡¢PKCS #8 ɸ½à¤ÎÄêµÁ¤Ë½¾¤Ã¤ÆEncryptedPrivateKeyInfo¤È¤·¤ÆÉ乿²½¤µ¤ì¤¿¡¢Êݸ¤ì¤¿Èó¸ø³«¸°¤ò³ÊǼ¤·¤Þ¤¹¡£¤â¤¦°ìÊý¤Î¥á¥½¥Ã¥É¤Îpassword¤Ï¡¢¸°¤ÎÊݸî¤Ë»È¤¦¥Ñ¥¹¥ï¡¼¥É¤Ç¤¹¡£
deleteEntry¥á¥½¥Ã¥É¤Ï¡¢¥¨¥ó¥È¥ê¤òºï½ü¤·¤Þ¤¹¡£final void deleteEntry(String alias)¥¡¼¥¹¥È¥¢¤«¤é¤Î¾ðÊó¤Î¼èÆÀ
getKey¥á¥½¥Ã¥É¤Ï¡¢Í¿¤¨¤é¤ì¤¿ÊÌ̾¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¸°¤òÊÖ¤·¤Þ¤¹¡£¸°¤Ï¡¢Í¿¤¨¤é¤ì¤¿¥Ñ¥¹¥ï¡¼¥É¤ò»È¤Ã¤ÆÉü¸µ¤µ¤ì¤Þ¤¹¡£¼¡¤Î¥á¥½¥Ã¥É¤Ï¡¢Í¿¤¨¤é¤ì¤¿ÊÌ̾¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¾ÚÌÀ½ñ¡¢¤Þ¤¿¤Ï¾ÚÌÀÏ¢º¿¤ò¤½¤ì¤¾¤ìÊÖ¤·¤Þ¤¹¡£final Key getKey(String alias, char[] password)¼¡¤Îʸ¤ò»È¤Ã¤Æ¡¢Í¿¤¨¤é¤ì¤¿¾ÚÌÀ½ñ¤È°ìÃפ·¤¿ºÇ½é¤Î¥¨¥ó¥È¥ê¤Î̾Á° (final Certificate getCertificate(String alias) final Certificate[] getCertificateChain(String alias)ÊÌ̾) ¤ò·èÄê¤Ç¤¤Þ¤¹¡£final String getCertificateAlias(Certificate cert)¥¡¼¥¹¥È¥¢¤ÎÊݸ
¥á¥â¥êÆâ¤Î¥¡¼¥¹¥È¥¢¤ò¡¢store¥á¥½¥Ã¥É¤ò»È¤Ã¤ÆÊݸ¤Ç¤¤Þ¤¹¡£¥Ñ¥¹¥ï¡¼¥É¤Ï¡¢¥¡¼¥¹¥È¥¢¥Ç¡¼¥¿¤ÎÅý¹ç¥Á¥§¥Ã¥¯¥µ¥à¤Î·×»»¤Ë»È¤ï¤ì¤Þ¤¹¡£Åý¹ç¥Á¥§¥Ã¥¯¥µ¥à¤Ï¡¢¥¡¼¥¹¥È¥¢¥Ç¡¼¥¿¤Î¤¢¤È¤ËÄɲ䵤ì¤Þ¤¹¡£final void store(OutputStream stream, char[] password)
SecureRandom ¥¯¥é¥¹
SecureRandom¥¯¥é¥¹¤Ï¡¢Íð¿ô¥¸¥§¥Í¥ì¡¼¥¿¤Îµ¡Ç½¤òÄ󶡤¹¤ë¥¨¥ó¥¸¥ó¥¯¥é¥¹¤Ç¤¹¡£
SecureRandom¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®¤Û¤«¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤ÈƱÍͤˡ¢SecureRandom¥ª¥Ö¥¸¥§¥¯¥È¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢SecureRandom¥¯¥é¥¹¤ÎgetInstancestatic ¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
static SecureRandom getInstance(String algorithm)¸Æ¤Ó½Ð¤·Â¦¤Ï¡¢Ç¤°Õ¤Ç¥×¥í¥Ð¥¤¥À¤Þ¤¿¤Ï
Provider¥¯¥é¥¹¤Î̾Á°¤ò»ØÄê¤Ç¤¤Þ¤¹¡£¥×¥í¥Ð¥¤¥À̾¤ò»ØÄꤹ¤ë¤È¡¢Í׵᤹¤ëÍð¿ôÀ¸À® (RNG) ¥¢¥ë¥´¥ê¥º¥à¤Î¼ÂÁõ¤ò³Î¼Â¤Ë»ØÄê¥×¥í¥Ð¥¤¥À¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£static final SecureRandom getInstance(String algorithm, String provider) static final SecureRandom getInstance(String algorithm, Provider provider)
SecureRandom¥ª¥Ö¥¸¥§¥¯¥È¤Î¥·¡¼¥É¤Þ¤¿¤ÏºÆ¥·¡¼¥É¸Æ¤Ó½Ð¤·Â¦¤¬¡¢
setSeed¥á¥½¥Ã¥É¤Î 1 ¤Ä¤Ø¤Î¸Æ¤Ó½Ð¤·¤Ç¡¢getInstance¥á¥½¥Ã¥É¤Ø¤Î¸Æ¤Ó½Ð¤·¤Ë½¾¤¦¾ì¹ç°Ê³°¤Ï¡¢SecureRandom¤Î¼ÂÁõ¤Ï¡¢¥¸¥§¥Í¥ì¡¼¥¿¤ÎÆâÉô¾õÂÖ¼«ÂΤò´°Á´¤Ë¥é¥ó¥À¥à²½¤·¤è¤¦¤È¤·¤Þ¤¹¡£synchronized public void setSeed(byte[] seed) public void setSeed(long seed)SecureRandom¥ª¥Ö¥¸¥§¥¯¥È¤Ë°ìÅÙ¥·¡¼¥É¤¬Æþ¤ì¤é¤ì¤ë¤È¡¢¤³¤ì¤Ï¥ª¥ê¥¸¥Ê¥ë¤Î¥·¡¼¥É¤ÈƱ¤¸¤è¤¦¤Ë¥é¥ó¥À¥à¤Ë¥Ó¥Ã¥È¤òÀ¸À®¤·¤Þ¤¹¡£
SecureRandom¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢setSeed¥á¥½¥Ã¥É¤Î 1 ¤Ä¤ò»È¤Ã¤Æ¾ï¤ËºÆ¥·¡¼¥É¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£»ØÄꤵ¤ì¤¿¥·¡¼¥É¤Ï¡¢´û¸¤Î¥·¡¼¥É¤ÈÃÖ¤´¹¤¨¤é¤ì¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢´û¸¤Î¥·¡¼¥É¤ËÄɲ䵤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¸Æ¤Ó½Ð¤·¤ò·«¤êÊÖ¤·¤Æ¤â¡¢¥é¥ó¥À¥àÀ¤¬¸º¾¯¤·¤Ê¤¤¤³¤È¤¬Êݾڤµ¤ì¤Þ¤¹¡£
SecureRandom¥ª¥Ö¥¸¥§¥¯¥È¤Î»È¤¤Êý¥é¥ó¥À¥à¥Ð¥¤¥È¤òÆÀ¤ë¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·Â¦¤Ïñ½ã¤ËǤ°Õ¤ÎŤµ¤ÎÇÛÎó¤òÅϤ·¤Þ¤¹¡£¤¹¤ë¤È¡¢¤³¤ÎÇÛÎó¤Ë¥é¥ó¥À¥à¥Ð¥¤¥È¤¬Æþ¤ê¤Þ¤¹¡£
synchronized public void nextBytes(byte[] bytes)¥·¡¼¥É¥Ð¥¤¥È¤ÎÀ¸À®
¤Û¤«¤ÎÍð¿ô¥¸¥§¥Í¥ì¡¼¥¿¤Ë¥·¡¼¥É¤òÆþ¤ì¤ë¾ì¹ç¤Ê¤É¡¢É¬Íפʾì¹ç¤Ï¡¢generateSeed¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢Í¿¤¨¤é¤ì¤¿¿ô¤Î¥·¡¼¥É¥Ð¥¤¥È¤òÀ¸À®¤Ç¤¤Þ¤¹¡£byte[] generateSeed(int numBytes)
Cipher¥¯¥é¥¹¤Ï¡¢°Å¹æ²½¤ª¤è¤Ó°Å¹æ²òÆÉ¤Ç»ÈÍѤµ¤ì¤ë°Å¹æµ¡Ç½¤òÄ󶡤·¤Þ¤¹¡£¤³¤ì¤Ï¡¢JCE ¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Î¥³¥¢Éôʬ¤ò¹½À®¤·¤Þ¤¹¡£Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®
API Æâ¤Î¾¤Î¥¨¥ó¥¸¥ó¥¯¥é¥¹¤ÈƱÍÍ¡¢
Cipher¥ª¥Ö¥¸¥§¥¯¥È¤ÏCipher¥¯¥é¥¹¤ÎgetInstance¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É¤ò»È¤Ã¤ÆºîÀ®¤µ¤ì¤Þ¤¹¡£¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É¤Ï¡¢¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÊÖ¤¹ static ¥á¥½¥Ã¥É¤Ç¤¹¡£¤³¤Î¾ì¹ç¤Ï¡¢Í׵ᤵ¤ì¤¿ transformation ¤ò¼ÂÁõ¤¹¤ëCipher¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¹¡£
Cipher¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤¹¤ë¤Ë¤Ï¡¢ÊÑ´¹Ì¾¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Í׵ᤵ¤ì¤¿ÊÑ´¹¤Î¼ÂÁõ¤òÄ󶡤¹¤ë¥×¥í¥Ð¥¤¥À¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
public static Cipher getInstance(String transformation);
public static Cipher getInstance(String transformation,
String provider);ÊÑ´¹Ì¾¤À¤±¤ò»ØÄꤹ¤ë¤È¡¢Í׵ᤵ¤ì¤¿ÊÑ´¹¤Î¼ÂÁõ¤¬¤½¤Î´Ä¶¤Ç»ÈÍѲÄǽ¤«¤É¤¦¤«¡¢¤Þ¤¿Ê£¿ô¤Î¼ÂÁõ¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ë¤ÏÍ¥ÀèÅ٤ι⤤¼ÂÁõ¤¬Â¸ºß¤¹¤ë¤«¤É¤¦¤«¤ò¥·¥¹¥Æ¥à¤¬È½Ê̤·¤Þ¤¹¡£
ÊÑ´¹Ì¾¤È¥Ñ¥Ã¥±¡¼¥¸¥×¥í¥Ð¥¤¥À¤ÎξÊý¤ò»ØÄꤹ¤ë¤È¡¢¥·¥¹¥Æ¥à¤ÏÍ׵ᤵ¤ì¤¿¥Ñ¥Ã¥±¡¼¥¸Æâ¤ËÍ׵ᤵ¤ì¤¿ÊÑ´¹¤Î¼ÂÁõ¤¬Â¸ºß¤¹¤ë¤«¤É¤¦¤«¤ò³Îǧ¤·¡¢Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ë¤ÏÎã³°¤ò¥¹¥í¡¼¤·¤Þ¤¹¡£
ÊÑ´¹¤Ï¡¢¼¡¤Î½ñ¼°¤Çµ½Ò¤µ¤ì¤Þ¤¹¡£
¤¿¤È¤¨¤Ð¡¢°Ê²¼¤Ï͸ú¤ÊÊÑ´¹¤Ç¤¹¡£
"DES/CBC/PKCS5Padding"
"DES"Cipher c1 = Cipher.getInstance("DES/ECB/PKCS5Padding");Cipher c1 = Cipher.getInstance("DES");¤Î 2 ¤Ä¤Îʸ¤Ï¡¢Åù²Á¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¥É¥¥å¥á¥ó¥È¤Î¡ÖÉÕÏ¿ A¡×¤Ë¤Ï¡¢ÊÑ´¹¤Î¥¢¥ë¥´¥ê¥º¥à̾¡¢¥â¡¼¥É¡¢¤ª¤è¤Ó¥Ñ¥Ç¥£¥ó¥°Êý¼°¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î»ØÄê¤Ë»ÈÍѲÄǽ¤Êɸ½à̾¤Î¥ê¥¹¥È¤¬·ÇºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¥Õ¥¡¥¯¥È¥ê¥á¥½¥Ã¥É¤Ë¤è¤êÊÖ¤µ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¤¿¤á¡¢»ÈÍѤ¹¤ëÁ°¤Ë½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½
getInstance¤ò²ð¤·¤Æ¼èÆÀ¤µ¤ì¤¿ Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¼¡¤Î 4 ¤Ä¤Î¥â¡¼¥É¤Î¤¤¤º¤ì¤«¤Ç½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥â¡¼¥É¤Ï¡¢Cipher¥¯¥é¥¹¤Î final (¥Õ¥¡¥¤¥Ê¥ë) À°¿ô¤ÎÄê¿ô¤È¤·¤ÆÄêµÁ¤µ¤ì¤Þ¤¹¡£¥â¡¼¥É¤Ï¡¢¥·¥ó¥Ü¥ë̾¤Ç»²¾È¤Ç¤¤Þ¤¹¡£°Ê²¼¤Ë¡¢³Æ¥â¡¼¥É¤Î¥·¥ó¥Ü¥ë̾¤ª¤è¤ÓÌÜŪ¤ò¼¨¤·¤Þ¤¹¡£
- ENCRYPT_MODE
¥Ç¡¼¥¿¤Î°Å¹æ²½- DECRYPT_MODE
¥Ç¡¼¥¿¤Î°Å¹æ²òÆÉ- WRAP_MODE
°ÂÁ´¤ËžÁ÷¤¹¤ë¤¿¤á¤Ë¸°¤ò¥é¥Ã¥Ô¥ó¥°¤¹¤ë- UNWRAP_MODE
¥é¥Ã¥Ô¥ó¥°¤µ¤ì¤¿¸°¤òjava.security.Key¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥ó¥é¥Ã¥Ô¥ó¥°¤¹¤ëCipher ½é´ü²½¥á¥½¥Ã¥É¤Ï¡¢¤½¤ì¤¾¤ì¥â¡¼¥É¥Ñ¥é¥á¡¼¥¿ (
opmode) ¤ò¤È¤ê¡¢¤½¤Î¥â¡¼¥ÉÍѤΠCipher ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£Â¾¤Î¥Ñ¥é¥á¡¼¥¿¤Ë¤Ï¡¢¸° (key) ¤Þ¤¿¤Ï¸°¤ò´Þ¤à¾ÚÌÀ½ñ (certificate)¡¢¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿ (params)¡¢¤ª¤è¤ÓÍð¿ô¤ÎȯÀ¸¸» (random) ¤¬´Þ¤Þ¤ì¤Þ¤¹¡£Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ë¾ì¹ç¡¢¼¡¤Î¤¤¤º¤ì¤«¤Î
init¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£public void init(int opmode, Key key);
public void init(int opmode, Certificate certificate)
public void init(int opmode, Key key,
SecureRandom random);
public void init(int opmode, Certificate certificate,
SecureRandom random)
public void init(int opmode, Key key,
AlgorithmParameterSpec params);
public void init(int opmode, Key key,
AlgorithmParameterSpec params,
SecureRandom random);
public void init(int opmode, Key key,
AlgorithmParameters params)
public void init(int opmode, Key key,
AlgorithmParameters params,
SecureRandom random)½é´ü²½¥Ù¥¯¥È¥ë¤Ê¤É¤Î¥Ñ¥é¥á¡¼¥¿¤òɬÍפȤ¹¤ë Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ò°Å¹æ²½ÍѤ˽é´ü²½¤¹¤ë¾ì¹ç¡¢
init¥á¥½¥Ã¥É¤Ë¥Ñ¥é¥á¡¼¥¿¤ò²¿¤â»ØÄꤷ¤Ê¤¤¤È¡¢¥é¥ó¥À¥à¥Ñ¥é¥á¡¼¥¿¤òÀ¸À®¤¹¤ë¤«¡¢¥×¥í¥Ð¥¤¥À¸ÇͤΥѥé¥á¡¼¥¿¥»¥Ã¥È (¥Ç¥Õ¥©¥ë¥È) ¤ò»ÈÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢´ðÈפȤʤë°Å¹æ¼ÂÁõ¤¬É¬¿Ü¥Ñ¥é¥á¡¼¥¿¤òÄ󶡤¹¤ë¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢¥Ñ¥é¥á¡¼¥¿¤òɬÍפȤ¹¤ë Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ò°Å¹æ²òÆÉÍѤ˽é´ü²½¤¹¤ë¾ì¹ç¡¢
init¥á¥½¥Ã¥É¤Ë¥Ñ¥é¥á¡¼¥¿¤ò²¿¤â»ØÄꤷ¤Ê¤¤¤È¡¢»ÈÍѤ·¤¿init¥á¥½¥Ã¥É¤Ë±þ¤¸¤ÆInvalidKeyException¤Þ¤¿¤ÏInvalidAlgorithmParameterExceptionÎã³°¤¬È¯À¸¤·¤Þ¤¹¡£¾ÜºÙ¤Ï¡¢¡Ö¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Î´ÉÍý¡×¤Ë´Ø¤¹¤ë¥»¥¯¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
°Å¹æ²òÆÉ¤Ë¤Ï¡¢°Å¹æ²½¤Ë»ÈÍѤ·¤¿¤Î¤ÈƱ¤¸¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ë¤È¡¢¤½¤ì¤Þ¤Ç¤Ë³ÍÆÀ¤·¤¿¾õÂÖ¤¬¤¹¤Ù¤Æ¼º¤ï¤ì¤ë¤³¤È¤Ëα°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¤Ä¤Þ¤ê¡¢Cipher ¤ò½é´ü²½¤¹¤ë¤³¤È¤Ï¡¢¤½¤Î Cipher ¤Î¿·µ¬¥¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ®¤·¤Æ½é´ü²½¤¹¤ë¤³¤È¤ÈÅù²Á¤Ç¤¹¡£¤¿¤È¤¨¤Ð¡¢»ØÄꤵ¤ì¤¿¸°¤Ç°Å¹æ²òÆÉ¤ò¹Ô¤¦¤¿¤á¤Ë Cipher ¤ò½é´ü²½¤·¤Æ¤«¤é¡¢°Å¹æ²½¤ò¹Ô¤¦¤¿¤á¤Ë½é´ü²½¤¹¤ë¤È¡¢°Å¹æ²òÆÉ¥â¡¼¥É¤Ç³ÍÆÀ¤·¤¿¾õÂ֤Ϥ¹¤Ù¤Æ¼º¤ï¤ì¤Þ¤¹¡£
¥Ç¡¼¥¿¤Î°Å¹æ²½¤ª¤è¤Ó°Å¹æ²òÆÉ
¥Ç¡¼¥¿¤Î°Å¹æ²½¤Þ¤¿¤Ï°Å¹æ²òÆÉ¤Ï¡¢1 ¤Ä¤Î¥¹¥Æ¥Ã¥×¤Ç¼Â¹Ô (¡Öñ°ìÉôʬÁàºî¡×) ¤¹¤ë¤³¤È¤â ¡¢Ê£¿ô¤Î¥¹¥Æ¥Ã¥×¤Ç¼Â¹Ô (¡ÖÊ£¿ôÉôʬÁàºî¡×) ¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¥Ç¡¼¥¿¤ÎŤµ¤¬ÉÔÌÀ¤Ê¾ì¹ç¡¢¤Þ¤¿¤Ï¥Ç¡¼¥¿¤¬Ä¹¤¹¤®¤Æ°ìÅ٤˥á¥â¥ê¤Ë³ÊǼ¤Ç¤¤Ê¤¤¾ì¹ç¤Ë¡¢Ê£¿ôÉôʬÁàºî¤ÏÍÍѤǤ¹¡£
ñÆÈ¤Î¥¹¥Æ¥Ã¥×¤Ç¥Ç¡¼¥¿¤Î°Å¹æ²½¤Þ¤¿¤Ï°Å¹æ²òÆÉ¤ò¹Ô¤¦¾ì¹ç¡¢¼¡¤Î¤¤¤º¤ì¤«¤Î
doFinal¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£public byte[] doFinal(byte[] input);
public byte[] doFinal(byte[] input, int inputOffset,
int inputLen);
public int doFinal(byte[] input, int inputOffset,
int inputLen, byte[] output);
public int doFinal(byte[] input, int inputOffset,
int inputLen, byte[] output, int outputOffset)Ê£¿ô¤Î¥¹¥Æ¥Ã¥×¤Ç¥Ç¡¼¥¿¤Î°Å¹æ²½¤Þ¤¿¤Ï°Å¹æ²òÆÉ¤ò¹Ô¤¦¤Ë¤Ï¡¢¼¡¤Î¤¤¤º¤ì¤«¤Î
update¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£public byte[] update(byte[] input);
public byte[] update(byte[] input, int inputOffset, int inputLen);
public int update(byte[] input, int inputOffset, int inputLen,
byte[] output);
public int update(byte[] input, int inputOffset, int inputLen,
byte[] output, int outputOffset)Ê£¿ôÉôʬÁàºî¤Ï¡¢¾åµ¤Î
doFinal¥á¥½¥Ã¥É¤Î¤¤¤º¤ì¤« (ºÇ¸å¤Î¥¹¥Æ¥Ã¥×¤ÇÆþÎϥǡ¼¥¿¤¬»Ä¤µ¤ì¤ë¾ì¹ç)¡¢¤Þ¤¿¤Ï¼¡¤ÎdoFinal¥á¥½¥Ã¥É¤Î¤¤¤º¤ì¤« (ºÇ¸å¤Î¥¹¥Æ¥Ã¥×¤ÇÆþÎϥǡ¼¥¿¤¬»Ä¤é¤Ê¤¤¾ì¹ç) ¤ò»È¤Ã¤Æ½ªÎ»¤µ¤»¤Þ¤¹¡£public byte[] doFinal();
public int doFinal(byte[] output, int outputOffset);»ØÄꤵ¤ì¤¿ÊÑ´¹¤Î°ìÉô¤È¤·¤Æ¥Ñ¥Ç¥£¥ó¥° (¤Þ¤¿¤Ï¥¢¥ó¥Ñ¥Ç¥£¥ó¥°) ¤¬Í׵ᤵ¤ì¤¿¾ì¹ç¡¢¤¹¤Ù¤Æ¤Î
doFinal¥á¥½¥Ã¥É¤Ç¡¢É¬Íפʥѥǥ£¥ó¥° (¤Þ¤¿¤Ï¥¢¥ó¥Ñ¥Ç¥£¥ó¥°) Áàºî¤¬¤¹¤Ù¤Æ½èÍý¤µ¤ì¤Þ¤¹¡£
doFinal¤ò¸Æ¤Ó½Ð¤¹¤È¡¢Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤Ïinit¤ò¸Æ¤Ó½Ð¤·¤Æ½é´ü²½¤·¤¿»þ¤Î¾õÂ֤˥ꥻ¥Ã¥È¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Cipher ¤Ï¥ê¥»¥Ã¥È¤µ¤ì¤Æ¡¢¥Ç¡¼¥¿¤ò¤µ¤é¤Ë°Å¹æ²½¤Þ¤¿¤Ï°Å¹æ²òÆÉ (init¤Î¸Æ¤Ó½Ð¤·¤Ç»ØÄꤵ¤ì¤¿Áàºî¥â¡¼¥É¤Ë´ð¤Å¤¯) ¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¸°¤Î¥é¥Ã¥Ô¥ó¥°¤È¥¢¥ó¥é¥Ã¥Ô¥ó¥°
¸°¤ò¥é¥Ã¥Ô¥ó¥°¤¹¤ë¤È¡¢¤¢¤ë¾ì½ê¤«¤éÊ̤ξì½ê¤Ø°ÂÁ´¤ËžÁ÷¤Ç¤¤Þ¤¹¡£
wrap/unwrapAPI ¤Ï¸°¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤ÆÄ¾Àܵ¡Ç½¤¹¤ë¤¿¤á¡¢¤³¤Î API ¤ò»ÈÍѤ¹¤ë¤È¥³¡¼¥É¤Îµ½Ò¤¬Íưפˤʤê¤Þ¤¹¡£¼¡¤Î¥á¥½¥Ã¥É¤ò»ÈÍѤ¹¤ë¤È¡¢¥Ï¡¼¥É¥¦¥§¥¢¥Ù¡¼¥¹¤Î¸°¤Î°ÂÁ´¤ÊžÁ÷¤â²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£Key ¤ò wrap ¤¹¤ë¾ì¹ç¡¢¤Þ¤º WRAP_MODE ¤Î Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¡¢¼¡¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
public final byte[] wrap(Key key);¥é¥Ã¥×¤µ¤ì¤¿¸°¤Î¥Ð¥¤¥È (
wrap¤ò¸Æ¤Ó½Ð¤·¤¿·ë²Ì) ¤ò¡¢¤½¤Î¥é¥Ã¥×¤ò²ò½ü¤¹¤ë¾¤Î¥æ¡¼¥¶¤ËÄ󶡤¹¤ë¾ì¹ç¡¢¼õ¿®¼Ô¤¬unwrap¤ò¼Â¹Ô¤¹¤ë¤Î¤ËɬÍפʡ¢¼¡¤ÎÄɲþðÊó¤âÁ÷¿®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
- ¸°¥¢¥ë¥´¥ê¥º¥à¤Î̾Á°
- ¥é¥Ã¥×¤µ¤ì¤¿¸°¤Î·¿ (
Cipher.SECRET_KEY¡¢Cipher.PRIVATE_KEY¡¢¤Þ¤¿¤ÏCipher.PUBLIC_KEY¤Î¤¤¤º¤ì¤«)¸°¥¢¥ë¥´¥ê¥º¥à̾¤Ï¡¢¼¡¤Ë¼¨¤¹¤è¤¦¤Ë Key ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤«¤é
getAlgorithm¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤ê³Îǧ¤Ç¤¤Þ¤¹¡£public String getAlgorithm();
wrap¤Ø¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤êÊÖ¤µ¤ì¤¿¥Ð¥¤¥È¤Î¥é¥Ã¥×¤ò²ò½ü¤¹¤ë¤Ë¤Ï¡¢UNWRAP_MODE ¤Î Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Æ¤«¤é¡¢°Ê²¼¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£public final Key unwrap(byte[] wrappedKey,
String wrappedKeyAlgorithm,
int wrappedKeyType));¤³¤³¤Ç¡¢
wrappedKey¤Ï¥é¥Ã¥×¤Ø¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤êÊÖ¤µ¤ì¤¿¥Ð¥¤¥È¤ò¡¢wrappedKeyAlgorithm¤Ï¥é¥Ã¥×¤µ¤ì¤¿¸°¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥¢¥ë¥´¥ê¥º¥à¤ò¡¢wrappedKeyType¤Ï¥é¥Ã¥×¤µ¤ì¤¿¸°¤Î·¿¤ò¤½¤ì¤¾¤ì»Ø¤·¤Þ¤¹¡£¤³¤ì¤Ï¡¢Cipher.SECRET_KEY¡¢Cipher.PRIVATE_KEY¡¢¤Þ¤¿¤ÏCipher.PUBLIC_KEY¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Î´ÉÍý
´ðÈפȤʤë Cipher ¼ÂÁõ¤Ë¤è¤ê»ÈÍѤµ¤ì¤ë¥Ñ¥é¥á¡¼¥¿ (¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¤è¤ê
init¥á¥½¥Ã¥É¤ËÌÀ¼¨Åª¤ËÅϤµ¤ì¤¿¤«¡¢´ðÈפȤʤë¼ÂÁõ¼«ÂΤˤè¤êÀ¸À®¤µ¤ì¤¿) ¤Ï¡¢getParameters¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤ê Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¤òjava.security.AlgorithmParameters¥ª¥Ö¥¸¥§¥¯¥È (¥Ñ¥é¥á¡¼¥¿¤¬»ÈÍѤµ¤ì¤Ê¤¤¾ì¹ç¤Ïnull) ¤È¤·¤ÆÊÖ¤·¤Þ¤¹¡£¥Ñ¥é¥á¡¼¥¿¤¬½é´ü²½¥Ù¥¯¥È¥ë (IV) ¤Î¾ì¹ç¡¢getIV¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤ê¥Ñ¥é¥á¡¼¥¿¤ò¼èÆÀ¤Ç¤¤Þ¤¹¡£¼¡¤ÎÎã¤Ç¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¥Ù¡¼¥¹°Å¹æ²½¤ò¼ÂÁõ¤¹¤ë Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ»¤º¤Ë¸°¤Î¤ß¤ò»ÈÍѤ·¤Æ½é´ü²½¤·¤Þ¤¹¡£¤¿¤À¤·¡¢ÁªÂò¤µ¤ì¤¿¥Ñ¥¹¥ï¡¼¥É¥Ù¡¼¥¹°Å¹æ²½ÍѤËÁªÂò¤µ¤ì¤¿¥¢¥ë¥´¥ê¥º¥à¤Ï¡¢salt ¤ª¤è¤Ó iteration count ¤È¤¤¤¦ 2 ¤Ä¤Î¥Ñ¥é¥á¡¼¥¿¤òɬÍפȤ·¤Þ¤¹¡£¤³¤ì¤é¤Ï¡¢´ðÈפȤʤ륢¥ë¥´¥ê¥º¥à¼ÂÁõ¼«ÂΤˤè¤êÀ¸À®¤µ¤ì¤Þ¤¹¡£¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢À¸À®¤µ¤ì¤¿¥Ñ¥é¥á¡¼¥¿¤ò°Ê²¼¤ÎÊýË¡¤Ç Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼èÆÀ¤Ç¤¤Þ¤¹¡£
import javax.crypto.*;
import java.security.AlgorithmParameters;
// get cipher object for password-based encryption
Cipher c = Cipher.getInstance("PBEWithMD5AndDES");
// initialize cipher for encryption, without supplying
// any parameters.Here, "myKey" is assumed to refer
// to an already-generated key.
c.init(Cipher.ENCRYPT_MODE, myKey);
// encrypt some data and store away ciphertext
// for later decryption
byte[] cipherText = c.doFinal("This is just an example".getBytes());
// retrieve parameters generated by underlying cipher
// implementation
AlgorithmParameters algParams = c.getParameters();
// get parameter encoding and store it away
byte[] encodedAlgParams = algParams.getEncoded();°Å¹æ²òÆÉ¤Ë¤Ï¡¢°Å¹æ²½¤Ë»ÈÍѤ·¤¿¤Î¤ÈƱ¤¸¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Ï¡¢¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤«¤é¥¤¥ó¥¹¥¿¥ó¥¹²½¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ê¡¢¼¡¤Ë¼¨¤¹¤è¤¦¤Ë¡¢Âбþ¤¹¤ë Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ò°Å¹æ²òÆÉÍѤ˽é´ü²½¤¹¤ëºÝ¤Ë»ÈÍѤǤ¤Þ¤¹¡£
import javax.crypto.*;
import java.security.AlgorithmParameters;
// get parameter object for password-based encryption
AlgorithmParameters algParams;
algParams =
AlgorithmParameters.getInstance("PBEWithMD5AndDES");
// initialize with parameter encoding from above
algParams.init(encodedAlgParams);
// get cipher object for password-based encryption
Cipher c = Cipher.getInstance("PBEWithMD5AndDES");
// initialize cipher for decryption, using one of the
// init() methods that takes an AlgorithmParameters
// object, and pass it the algParams object from above
c.init(Cipher.DECRYPT_MODE, myKey, algParams);Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½»þ¤Ë¥Ñ¥é¥á¡¼¥¿¤ò°ìÀÚ»ØÄꤻ¤º¡¢´ðÈפȤʤë¼ÂÁõ¤¬¤¤¤º¤ì¤«¤Î¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ¹¤ë¤«¤É¤¦¤«ÉÔÌÀ¤Ê¾ì¹ç¡¢Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤Î
getParameters¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢ÊÖ¤µ¤ì¤ëÃͤò¥Á¥§¥Ã¥¯¤¹¤ë¤À¤±¤Ç³Îǧ¤Ç¤¤Þ¤¹¡£ÊÖ¤µ¤ì¤ëÃͤ¬null¤Î¾ì¹ç¡¢¥Ñ¥é¥á¡¼¥¿¤¬»ÈÍѤµ¤ì¤Ê¤«¤Ã¤¿¤³¤È¤ò¼¨¤·¤Þ¤¹¡£SunJCE ¥×¥í¥Ð¥¤¥À¤Ë¤è¤ê¼ÂÁõ¤µ¤ì¤ë¼¡¤Î°Å¹æ¥¢¥ë¥´¥ê¥º¥à¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ·¤Þ¤¹¡£
- DES¡¢DES-EDE¡¢¤ª¤è¤Ó Blowfish ¤Ï¡¢¥Õ¥£¡¼¥É¥Ð¥Ã¥¯ (¤Ä¤Þ¤ê CBC¡¢CFB¡¢OFB¡¢¤Þ¤¿¤Ï PCBC) ¥â¡¼¥É¤Ç¤Î»ÈÍÑ»þ¤Ë¡¢½é´ü²½¥Ù¥¯¥È¥ë (IV) ¤ò»ÈÍѤ¹¤ë¡£
javax.crypto.spec.IvParameterSpec¥¯¥é¥¹¤Ï¡¢»ØÄꤵ¤ì¤¿ IV ¤Ç¤Î Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½¤Ë»ÈÍѤǤ¤ë- PBEWithMD5AndDES ¤Ï¡¢salt ¤ª¤è¤Ó iteration count ¤Ç¹½À®¤µ¤ì¤ë¥Ñ¥é¥á¡¼¥¿¥»¥Ã¥È¤ò»ÈÍѤ¹¤ë¡£
javax.crypto.spec.PBEParameterSpec¥¯¥é¥¹¤Ï¡¢»ØÄꤵ¤ì¤¿ salt ¤ª¤è¤Ó iteration count ¤ò»È¤Ã¤Æ PBEWithMD5AndDES ¤ò¼ÂÁõ¤¹¤ë Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ë¾ì¹ç¤Ë»ÈÍѤǤ¤ë
SealedObject¥¯¥é¥¹¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢°Å¹æ²òÆÉÁàºî¤Ë»ÈÍѤ¹¤ë¥¢¥ë¥´¥ê¥º¥à¥Ñ¥é¥á¡¼¥¿¤Î³ÊǼ¤Þ¤¿¤ÏžÁ÷¤Ë¤Ä¤¤¤Æ¿´ÇÛ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤³¤Î¥¯¥é¥¹¤Ï¡¢¥·¡¼¥ë (°Å¹æ²½) ¤Ë»ÈÍѤµ¤ì¤ë¥Ñ¥é¥á¡¼¥¿¤ò°Å¹æ²½¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¥³¥ó¥Æ¥ó¥Ä¤ËźÉÕ¤·¤Þ¤¹¡£¤Þ¤¿¡¢¥¢¥ó¥·¡¼¥ë (°Å¹æ²òÆÉ) ¤Ç¤âƱ¤¸¥Ñ¥é¥á¡¼¥¿¤ò»ÈÍѤ·¤Þ¤¹¡£°Å¹æ½ÐÎÏ»þ¤Î¹Íθ»ö¹à
Cipher ¤Î
update¤ª¤è¤ÓdoFinal¤ÎÃæ¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·Â¦¤Ë¤è¤ë½ÐÎϥХåե¡¤Î»ØÄ꤬²Äǽ¤Ê¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£°Å¹æ²½¤Þ¤¿¤Ï°Å¹æ²òÆÉ¤µ¤ì¤¿¥Ç¡¼¥¿¤Ï¡¢¤³¤Î¥Ð¥Ã¥Õ¥¡Æâ¤Ë½ÐÎϤµ¤ì¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢°Å¹æ²½¤Þ¤¿¤Ï°Å¹æ²òÆÉÁàºî¤Î·ë²Ì¤òÊÝ»ý¤Ç¤¤ë¤À¤±¤ÎÂ礤µ¤Î¥Ð¥Ã¥Õ¥¡¤òÅϤ¹¤³¤È¤Ï½ÅÍפǤ¹¡£Cipher Æâ¤Î¼¡¤Î¥á¥½¥Ã¥É¤ò»ÈÍѤ·¤Æ¡¢ÀßÄꤹ¤Ù¤½ÐÎϥХåե¡¤Î¥µ¥¤¥º¤ò³Îǧ¤Ç¤¤Þ¤¹¡£
public int getOutputSize(int inputLen)
JCE ¤Ë¡¢¥»¥¥å¥ê¥Æ¥£Êݸ¤ì¤¿¥¹¥È¥ê¡¼¥à¤È¤¤¤¦³µÇ°¤¬Æ³Æþ¤µ¤ì¤Þ¤·¤¿¡£¤³¤ì¤Ï¡¢InputStream ¤Þ¤¿¤Ï OutputStream ¤ò Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤È·ë¤ÓÉÕ¤±¤ë¤³¤È¤Ë¤è¤ê¼Â¸½¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥»¥¥å¥ê¥Æ¥£Êݸ¤ì¤¿¥¹¥È¥ê¡¼¥à¤Ï¡¢
CipherInputStream¤ª¤è¤ÓCipherOutputStream¥¯¥é¥¹¤Ë¤è¤êÄ󶡤µ¤ì¤Þ¤¹¡£
CipherInputStream ¥¯¥é¥¹
¤³¤Î¥¯¥é¥¹¤Ï¡¢Ä̲᤹¤ë¥Ç¡¼¥¿¤Î°Å¹æ²½¤Þ¤¿¤Ï°Å¹æ²òÆÉ¤ò¹Ô¤¦
FilterInputStream¤Ç¤¹¡£¤³¤ì¤Ï¡¢InputStream¤Þ¤¿¤Ï¤½¤Î¥µ¥Ö¥¯¥é¥¹¤Î¤¤¤º¤ì¤«¡¢¤ª¤è¤ÓCipher¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£CipherInputStream ¤Ï¡¢Cipher ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁÞÆþÀè¤Î¡¢¥»¥¥å¥ê¥Æ¥