Skip to content

Commit b5716fa

Browse files
* password_hash: Update for PHP 8.4 * password_*(): Sync with `password_hash()` * `password_hash()` のサンプルコードも原文の更新に追随 --------- Co-authored-by: 武田 憲太郎 <[email protected]>
1 parent 725ba04 commit b5716fa

File tree

3 files changed

+25
-19
lines changed

3 files changed

+25
-19
lines changed

reference/password/functions/password-hash.xml

+20-14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: 5bc68add3da3cd18c40f851e944b15095d3a26aa Maintainer: takagi Status: ready -->
3+
<!-- EN-Revision: e302f07943465892db7f72469e2ce9b42c4f763f Maintainer: takagi Status: ready -->
44
<!-- Credits: mumumu -->
55
<refentry xml:id="function.password-hash" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
66
<refnamediv>
@@ -39,9 +39,9 @@
3939
</listitem>
4040
<listitem>
4141
<simpara>
42-
<constant>PASSWORD_BCRYPT</constant> - <constant>CRYPT_BLOWFISH</constant>
43-
アルゴリズムを使ってハッシュを作ります。これは標準の <function>crypt</function>
44-
互換のハッシュで、識別子 "$2y$" を使った場合の結果を作ります。
42+
<constant>PASSWORD_BCRYPT</constant> - bcrypt アルゴリズムを使ってハッシュを作ります。
43+
これは標準の <function>crypt</function>
44+
互換のハッシュで、識別子 <literal>$2y$</literal> を使った場合の結果を作ります。
4545
その結果は、常に 60 文字の文字列になります。&return.falseforfailure;
4646
</simpara>
4747
</listitem>
@@ -90,8 +90,8 @@
9090
</para>
9191

9292
<para>
93-
省略した場合のデフォルトは <literal>10</literal> です。この値でもかまいませんが、
94-
ハードウェアの性能が許すならもう少し高くすることもできます
93+
省略した場合のデフォルトは <literal>12</literal> です。この値でもかまいませんが、
94+
ハードウェアの性能に応じて調整することもできます
9595
</para>
9696
</listitem>
9797
</itemizedlist>
@@ -199,6 +199,13 @@
199199
</row>
200200
</thead>
201201
<tbody>
202+
<row>
203+
<entry>8.4.0</entry>
204+
<entry>
205+
<constant>PASSWORD_BCRYPT</constant> アルゴリズムのデフォルトの <literal>cost</literal> オプションの値が
206+
<literal>10</literal> から <literal>12</literal> に引き上げられました。
207+
</entry>
208+
</row>
202209
<row>
203210
<entry>8.0.0</entry>
204211
<entry>
@@ -272,7 +279,7 @@ echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
272279
&example.outputs.similar;
273280
<screen>
274281
<![CDATA[
275-
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
282+
$2y$12$4Umg0rCJwMswRw/l.SwHvuQV01coP0eWmGzd61QH2RvAOMANUBGC.
276283
]]>
277284
</screen>
278285
</example>
@@ -284,11 +291,10 @@ $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
284291
<![CDATA[
285292
<?php
286293
/**
287-
* この例では、BCRYPT のコストをデフォルトより上げて、12 にします。
288-
* また、アルゴリズムを BCRYPT に変えたことにも注目しましょう。結果は常に 60 文字になります。
294+
* この例では、bcrypt のコストを上げて、13 にします。
289295
*/
290296
$options = [
291-
'cost' => 12,
297+
'cost' => 13,
292298
];
293299
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options);
294300
?>
@@ -297,7 +303,7 @@ echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options);
297303
&example.outputs.similar;
298304
<screen>
299305
<![CDATA[
300-
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
306+
$2y$13$xeDfQumlmdm0Sco.4qmH1OGfUUmOcuRmfae0dPJhjX1Bq0yYhqbNi
301307
]]>
302308
</screen>
303309
</example>
@@ -311,13 +317,13 @@ $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
311317
/**
312318
* このコードは、サーバーをベンチマークして、どの程度のコストに耐えられるかを判断します。
313319
* サーバーに負荷をかけすぎない範囲で、できるだけ高めのコストを設定したいものです。
314-
* 基準として 10 程度からはじめ、サーバーが十分に高速なら、できるだけ上げていきましょう。
320+
* 基準として 11 程度からはじめ、サーバーが十分に高速なら、できるだけ上げていきましょう。
315321
* 以下のコードでは、ストレッチングの時間を 350 ミリ秒以内にすることを狙っています。
316322
* 対話形式のログインを扱う際の許容時間としては、このあたりが適切でしょう。
317323
*/
318324
$timeTarget = 0.350; // 350 ミリ秒
319325
320-
$cost = 10;
326+
$cost = 11;
321327
do {
322328
$cost++;
323329
$start = microtime(true);
@@ -332,7 +338,7 @@ echo "Appropriate Cost Found: " . $cost;
332338
&example.outputs.similar;
333339
<screen>
334340
<![CDATA[
335-
Appropriate Cost Found: 12
341+
Appropriate Cost Found: 13
336342
]]>
337343
</screen>
338344
</example>

reference/password/functions/password-needs-rehash.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: ff492e168a557e4dd17574023b7c3cb21b14df3b Maintainer: takagi Status: ready -->
3+
<!-- EN-Revision: e302f07943465892db7f72469e2ce9b42c4f763f Maintainer: takagi Status: ready -->
44
<!-- Credits: mumumu -->
55

66
<refentry xml:id="function.password-needs-rehash" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
@@ -97,11 +97,11 @@
9797
<?php
9898
9999
$password = 'rasmuslerdorf';
100-
$hash = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS';
100+
$hash = '$2y$12$4Umg0rCJwMswRw/l.SwHvuQV01coP0eWmGzd61QH2RvAOMANUBGC.';
101101
102102
$algorithm = PASSWORD_BCRYPT;
103103
// bcrypt の cost パラメータは、ハードウェアの性能の向上にあわせて変えることができます
104-
$options = ['cost' => 12];
104+
$options = ['cost' => 13];
105105
106106
// 格納されたハッシュを、平文のパスワードに対して検証します
107107
if (password_verify($password, $hash)) {

reference/password/functions/password-verify.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: 5bc68add3da3cd18c40f851e944b15095d3a26aa Maintainer: takagi Status: ready -->
3+
<!-- EN-Revision: e302f07943465892db7f72469e2ce9b42c4f763f Maintainer: takagi Status: ready -->
44
<refentry xml:id="function.password-verify" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
55
<refnamediv>
66
<refname>password_verify</refname>
@@ -74,7 +74,7 @@
7474
<![CDATA[
7575
<?php
7676
// これをどうやって作ったのかは、password_hash() の例を参照ください
77-
$hash = '$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a';
77+
$hash = '$2y$12$4Umg0rCJwMswRw/l.SwHvuQV01coP0eWmGzd61QH2RvAOMANUBGC.';
7878
7979
if (password_verify('rasmuslerdorf', $hash)) {
8080
echo 'Password is valid!';

0 commit comments

Comments
 (0)