Seiji Sogabe
sogab****@alles*****
2006年 4月 29日 (土) 09:50:38 JST
曽我部です。 moon-****@nag***** wrote: > openssl > OpenSSL support enabled > OpenSSL Version OpenSSL 0.9.7d 17 Mar 2004 > > > phpinfo()で確認したところ > 上記のようになっていたので、使えるようです!! > これは、どう使ってよいのでしょうか? > 以下のマニュアルを見たのですが、初めて使うものでよく分かりません。 > 簡単でよいので、書き方を教えて頂けたらありがたいのですがm(_ _)m > マニュアルの下のほうにあるUser Contributed Notesに使いかたが 書いてある場合があります。 openssl_public_encrypt()のところに書いてあるものを真似たものですが、 以下のようなソースでできるようです。 公開鍵、秘密鍵については、 http://www.turbolinux.co.jp/knowledge/public/654.html が参考になると思います。 どのような目的で、 > プログラムの中で、ある文字列の暗号化と、 > 別のプログラムの中で、暗号化された文字列をGETで受け取って複合化する このようなことをするのでしょうか。WWWサーバとは別のサーバに データを送信するのでしょうか? <?php // 公開鍵 define('FILE_PUBLIC_KEY', 'public.pem'); // 秘密鍵 define('FILE_PRIVATE_KEY', 'private.pem'); // パスフレーズ define('PASSPHRASE', 'XXXXXXXXXX'); $data = '秘密のデータ'; $crypted_text = encrypt($data); $decrypted = decrypt($crypted_text); echo "暗号化前の文字列 = $data\n"; echo "暗号化された文字列 = $crypted_text\n"; echo "復号化された文字列 = $decrypted\n"; /** * 公開鍵で暗号化 * * @param string $data 暗号化する文字列 * @return string 暗号をbase64でエンコードした文字列 */ function encrypt($data) { // 公開鍵取得 $fp = fopen(FILE_PUBLIC_KEY, 'r'); $cert = fread($fp, 8192); fclose($fp); // 暗号化 openssl_public_encrypt($data, $crypted, $cert); return base64_encode($crypted); } /** * 秘密鍵で復号化 * * @param string $crypted_text 暗号をbase64でエンコードした文字列 * @return string 復号化した文字列 */ function decrypt($crypted_text) { $crypted = base64_decode($crypted_text); // 秘密鍵取得 $fp = fopen(FILE_PRIVATE_KEY, 'r'); $priv_key = fread($fp, 8192); fclose($fp); $res = openssl_get_privatekey($priv_key, PASSPHRASE); // 復号化 openssl_private_decrypt($crypted, $decrypted, $res); return $decrypted; } ?> -- sogab****@alles*****