|
1 | 1 | <?xml version="1.0" encoding="utf-8"?>
|
2 | 2 | <!-- $Revision$ -->
|
3 |
| -<!-- EN-Revision: 5bc68add3da3cd18c40f851e944b15095d3a26aa Maintainer: hirokawa Status: ready --> |
| 3 | +<!-- EN-Revision: 730fd5c3dd1523bb9330762084ce016d4e58e946 Maintainer: hirokawa Status: ready --> |
4 | 4 | <!-- CREDITS: takagi,mumumu -->
|
5 | 5 | <refentry xml:id="function.openssl-open" xmlns="http://docbook.org/ns/docbook">
|
6 | 6 | <refnamediv>
|
|
20 | 20 | <methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>iv</parameter><initializer>&null;</initializer></methodparam>
|
21 | 21 | </methodsynopsis>
|
22 | 22 | <para>
|
23 |
| - <function>openssl_open</function> は、キー ID |
24 |
| - <parameter>private_key</parameter> およびエンベロープキー |
25 |
| - <parameter>encrypted_key</parameter> に関連する公開鍵を使用して、 |
| 23 | + <function>openssl_open</function> は、 <parameter>private_key</parameter> を使用して |
| 24 | + <parameter>encrypted_key</parameter> から復号されたエンベロープキーによって |
26 | 25 | <parameter>data</parameter> をオープン(復号)します。
|
27 |
| - その上で、<parameter>output</parameter> を復号化したデータで埋めます。 |
28 |
| - エンベロープキーは、データがシール(暗号化)された際に生成され、特定の |
29 |
| - 一つの公開鍵でのみ使用することが可能です。詳細な情報については、 |
30 |
| - <function>openssl_seal</function> を参照ください。 |
| 26 | + 復号は <parameter>cipher_algo</parameter> と <parameter>iv</parameter> を使用して行なわれます。 |
| 27 | + IV は暗号方式が要求する場合にのみ必要です。復号されたデータは <parameter>output</parameter> に |
| 28 | + 格納されます。エンベロープキーは通常、秘密鍵に関連付けられた公開鍵を用いてデータがシール(暗号化) |
| 29 | + されたときに生成されます。 |
| 30 | + 詳細は <function>openssl_seal</function> を参照ください。 |
31 | 31 | </para>
|
32 | 32 | </refsect1>
|
33 | 33 |
|
|
39 | 39 | <term><parameter>data</parameter></term>
|
40 | 40 | <listitem>
|
41 | 41 | <para>
|
| 42 | + シール(暗号化)されたデータ。 |
42 | 43 | </para>
|
43 | 44 | </listitem>
|
44 | 45 | </varlistentry>
|
45 | 46 | <varlistentry>
|
46 | 47 | <term><parameter>output</parameter></term>
|
47 | 48 | <listitem>
|
48 | 49 | <para>
|
49 |
| - 成功した場合、オープンしたデータをここに返します。 |
| 50 | + 成功した場合、オープンしたデータをこのパラメータのリファレンス変数として返します。 |
50 | 51 | </para>
|
51 | 52 | </listitem>
|
52 | 53 | </varlistentry>
|
53 | 54 | <varlistentry>
|
54 | 55 | <term><parameter>encrypted_key</parameter></term>
|
55 | 56 | <listitem>
|
56 | 57 | <para>
|
| 58 | + <parameter>private_key</parameter> を用いて復号できる暗号化された対称鍵。 |
57 | 59 | </para>
|
58 | 60 | </listitem>
|
59 | 61 | </varlistentry>
|
60 | 62 | <varlistentry>
|
61 | 63 | <term><parameter>private_key</parameter></term>
|
62 | 64 | <listitem>
|
63 | 65 | <para>
|
| 66 | + <parameter>encrypted_key</parameter>の復号に用いられる秘密鍵。 |
64 | 67 | </para>
|
65 | 68 | </listitem>
|
66 | 69 | </varlistentry>
|
67 | 70 | <varlistentry>
|
68 | 71 | <term><parameter>cipher_algo</parameter></term>
|
69 | 72 | <listitem>
|
70 | 73 | <para>
|
71 |
| - 暗号化方式 |
| 74 | + <parameter>data</parameter>の復号に使用される暗号化方式。 |
72 | 75 | <caution>
|
73 | 76 | <simpara>
|
74 |
| - デフォルト値 (<literal>'RC4'</literal>) はセキュアでない値です。 |
| 77 | + PHP 8.0 以前のデフォルト値 (<literal>'RC4'</literal>) は安全ではありません。 |
75 | 78 | 明示的にセキュアな暗号化方式を指定することを強く推奨します。
|
76 | 79 | </simpara>
|
77 | 80 | </caution>
|
|
82 | 85 | <term><parameter>iv</parameter></term>
|
83 | 86 | <listitem>
|
84 | 87 | <para>
|
85 |
| - 初期化ベクトル。 |
| 88 | + データの復号に用いられる初期化ベクトル。暗号方式が IV を要求する場合に必要です。 |
| 89 | + これは <parameter>cipher_algo</parameter> で <function>openssl_cipher_iv_length</function> |
| 90 | + を呼び出すことで確認できます。 |
86 | 91 | </para>
|
87 | 92 | </listitem>
|
88 | 93 | </varlistentry>
|
|
139 | 144 | <programlisting role="php">
|
140 | 145 | <![CDATA[
|
141 | 146 | <?php
|
142 |
| -// $sealed および $env_key に暗号化されたデータおよびエンベロープキー |
143 |
| -// が含まれていると仮定。共にシール元(暗号化側)から与えられる。 |
144 | 147 |
|
145 |
| -// ファイルから公開鍵を取得し、使用可能とする |
146 |
| -$fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r"); |
147 |
| -$priv_key = fread($fp, 8192); |
148 |
| -fclose($fp); |
149 |
| -$pkeyid = openssl_get_privatekey($priv_key); |
| 148 | +// $sealed, $env_key および $iv に暗号化されたデータおよびエンベロープキーと |
| 149 | +// IV が含まれていると仮定。すべてシール元(暗号化側)から与えられる。 |
| 150 | +
|
| 151 | +// private_key.pem に置かれたファイルから公開鍵を取得する |
| 152 | +$pkey = openssl_get_privatekey("file://private_key.pem"); |
150 | 153 |
|
151 | 154 | // データを復号化し、$open に保存
|
152 |
| -if (openssl_open($sealed, $open, $env_key, $pkeyid)) { |
153 |
| - echo "here is the opened data: ", $open; |
| 155 | +if (openssl_open($sealed, $open, $env_key, $pkey, 'AES256', $iv)) { |
| 156 | + echo "Here is the opened data: ", $open; |
154 | 157 | } else {
|
155 |
| - echo "failed to open data"; |
| 158 | + echo "Failed to open data"; |
156 | 159 | }
|
157 |
| -
|
158 |
| -// 公開鍵をメモリから開放 |
159 |
| -openssl_free_key($pkeyid); |
160 | 160 | ?>
|
161 | 161 | ]]>
|
162 | 162 | </programlisting>
|
|
0 commit comments