「PHPでの公開鍵暗号」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「PHP OpenSSL を用いて、データを公開鍵暗号で暗号化し、復号します。 __TOC__ == 概要 == ここでは、以下の手順を行います。 # 鍵...」)
(相違点なし)

2014年8月13日 (水) 00:41時点における版

PHP OpenSSL を用いて、データを公開鍵暗号で暗号化し、復号します。

概要

ここでは、以下の手順を行います。

  1. 鍵ペアの作成
  2. データの暗号化
  3. データの復号

鍵ペアは、動的に作成する必要はありません。事前にOpenSSLコマンドで鍵ペアを作成したものを用いても構いません。

PHP OpenSSLでの簡単な公開鍵暗号

ソースコード

<?php
/**
 * Short description for keypair.php
 *
 * @package keypair
 * @author kaoru <kaoru@bsd>
 * @version 0.1
 * @copyright (C) 2014 kaoru <kaoru@bsd>
 */
$config = array (
        "digst_alg" => "sha512",
        "private_key_bits" => 4096,
        "private_key_type" => OPENSSL_KEYTYPE_RSA,
);
// Create the keypair
$res=openssl_pkey_new($config);
 
// Get private key
openssl_pkey_export($res, $privatekey);
 
// Get public key
$publickey_detail=openssl_pkey_get_details($res);
$publickey=$publickey_detail["key"];
 
// 暗号化するテキスト
$text = "Hoge";
 
// 暗号化
openssl_public_encrypt($text, $cipher_text, $publickey);
 
// 表示用に base64 エンコード
echo base64_encode("$cipher_text"), PHP_EOL;
 
// 復号
openssl_private_decrypt($cipher_text, $plain_text, $privatekey);
 
// 復号された文字列
echo $plain_text, PHP_EOL;
 
openssl_pkey_free ($res);
?>

使い方

$ php openssl_crypt.php
PoneCpMI8N9Ou7Xnn++ZuwWq5LKtEzC8pyDbYIcWGsDdJwZTVWG7zL5sbWB+aOY5mvjZbQ5Ey9jjbCZk4wZEtCzcVlS0A8dW82sLo749RLGCyHz0oXrE9ddIgwKILTH5F2WVJeCb8hLw5y+6QqbtKGjl0EyU5ZcTcc5bAM3BwBViUMSmzhZsTa+iAnVIJ0RSAq9lyfTlXQsLIOfm1qbSjblXljJLEZvxQIMckkaAEgdcoH6rJEKf1yPd9Yht4wnCxIwxo8I3ryYW6xSPjGXU9XNmZvVf0Xvyv0jbUiXeWB+fsc8tNJHiaj3IkA5WzLcX9SxYhF4pDx7NHsHu5sCBxy4CDK7yeDPUTCZ/OsxUXwc3mY3UVIkkIj53IwEKVG3G0GcMRQAu6Bd5duBxaQ9bi51aeyGJjM87ZH2NbhF2XIVjSjkwlajIeogO5V1OvNZkh5LI+piCzO5cb1A5hJBpq3qLvZYPpDrPvZxw5QwIwZPV+xOkJSWN1FSiV+wWcmGeol4vx9fQTJsTYPEQf/+Bj31J5EthEkB3jUWSAiWD1sbi2FQXFo76DS733O24n8vV9tva7uInV9OSbkHNXHsBM6ee0lfrK938Yh2jKjh8sMLqGJmyPWtiZtM2BMsxYEtCx/W415Vz5PUqfxD+62EjdtVIS1YK2/BBv76aTo65BNA=
Hoge

関連項目