説明
int
openssl_seal ( string data, string sealed_data, array env_keys, array pub_key_ids)
è¦å‘Š |
ã“ã®é–¢æ•°ã¯ã€
実験的ãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã«ã‚りã¾ã™ã€‚ã“れã¯ã€ã“ã®é–¢æ•°ã®
動作ã€é–¢æ•°åã€ã“ã“ã§æ›¸ã‹ã‚Œã¦ã„ã‚‹ã“ã¨å…¨ã¦ãŒPHPã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§äºˆå‘Š
ãªã変更ã•れるå¯èƒ½æ€§ãŒã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚注æ„ã‚’å–šèµ·ã™ã‚‹ã¨ã¨ã‚‚ã«è‡ªåˆ†
ã®ãƒªã‚¹ã‚¯ã§ã“ã®é–¢æ•°ã‚’使用ã—ã¦ä¸‹ã•ã„。 |
æˆåŠŸæ™‚ã«ã‚·ãƒ¼ãƒ«(æš—å·åŒ–)ã•れãŸãƒ‡ãƒ¼ã‚¿ã®é•·ã•ã€ã‚¨ãƒ©ãƒ¼æ™‚ã«FALSEã‚’è¿”ã—ã¾
ã™ã€‚æˆåŠŸæ™‚ã«ã¯ã€æš—å·åŒ–ã•れãŸãƒ‡ãƒ¼ã‚¿ãŒ
sealed_dataã«ã€ã‚¨ãƒ³ãƒ™ãƒãƒ¼ãƒ—ã‚ーãŒ
env_keys ã«è¿”ã•れã¾ã™ã€‚
openssl_seal() ã¯ã€ãƒ©ãƒ³ãƒ€ãƒ ã«ç”Ÿæˆã•れãŸç§˜å¯†ã‚ー
ã«ã‚ˆã‚Š RC4 を使用ã—㦠dataをシール(æš—å·åŒ–)
ã—ã¾ã™ã€‚ã“ã®ã‚ーã¯ã€pub_key_ids ã‚’IDã¨ã™ã‚‹
å„公開ã‚ãƒ¼ã§æš—å·åŒ–ã•れã¾ã™ã€‚ã“れã¯ã€æš—å·åŒ–ã•れãŸãƒ‡ãƒ¼ã‚¿ã‚’複数ã®å—
信者ã«é€ä¿¡ã§ãã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚(ã“ã®éš›ã€å„å—信者ã¯é€ä¿¡å´ã«å…¬é–‹
ã‚ーをæä¾›ã—ã¾ã™ã€‚)å„å—信者ã¯ã€æš—å·åŒ–ã•れãŸãƒ‡ãƒ¼ã‚¿ã¨ãã®å—信者ã®å…¬
é–‹ã‚ãƒ¼ã§æš—å·åŒ–ã•れãŸã‚¨ãƒ³ãƒ™ãƒãƒ¼ãƒ—ã‚ーをå—ã‘å–ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
例 1openssl_seal() ã®ä¾‹ // $data ã«ã¯ã€æš—å·åŒ–ã•れるデータãŒå«ã¾ã‚Œã¦ã„ã‚‹ã¨ä»®å®š
// å—信者ã®å…¬é–‹ã‚ーをå–å¾—ã—ã€ä½¿ç”¨å¯èƒ½ã«ã™ã‚‹
$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);
// 2番目ã®å—信者ã«ã¤ã„ã¦ã‚‚åŒæ§˜
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);
// メッセージを暗å·åŒ–。$pk1 ãŠã‚ˆã³ $pk2 ã®æ‰€æœ‰è€…ã®ã¿ãŒã€æš—å·åŒ–ã•れãŸ
// データをãれãžã‚Œã‚¨ãƒ³ãƒ™ãƒãƒ¼ãƒ—ã‚ー$ekeys[0]ãŠã‚ˆã³$ekeys[1]ã§å¾©å·åŒ–ã™
// ã‚‹ã“ã¨ãŒå¯èƒ½
openssl_seal($data, $sealed, $ekeys, array($pk1,$pk2));
// ã‚ーをメモリã‹ã‚‰é–‹æ”¾ã™ã‚‹
openssl_free_key($pk1);
openssl_free_key($pk2); |
|
openssl_open() ã‚‚å‚照下ã•ã„。