現在の位置: ホーム> 最新記事一覧> Crypt()暗号化に必要な時間をテストする方法

Crypt()暗号化に必要な時間をテストする方法

M66 2025-05-27

PHPでは、 Crypt()関数がパスワードを暗号化するためによく使用されます。セキュリティ関連のアプリケーションでは、標準のDES、MD5、SHA-256、SHA-512などのさまざまなアルゴリズムをサポートしています。特に、システムのパフォーマンスを評価したり、パスワードハッシュコストコントロールを実行する場合は、 Crypt()関数の実行時間を理解することが非常に重要です。

この記事では、PHPを介してCrypt()機能の暗号化時間を測定し、実用的な例を紹介する方法を紹介します。

microTime()を使用して時間を測定します

PHPでは、 MicroTime(True)関数を使用して現在のUNIXタイムスタンプ(マイクロ秒を含む)を取得し、2つのタイムスタンプの違いを計算することにより、特定のコードの実行時間を測定できます。

Crypt()関数の時間のかかる暗号化を測定する例は次のとおりです。

 <?php
$password = 'TestPassword123';
$salt = '$6$rounds=5000$usesomesillystringforsalt$'; // SHA-512 例

$start = microtime(true);
$hash = crypt($password, $salt);
$end = microtime(true);

$duration = $end - $start;

echo "暗号化の結果: $hash\n";
echo "時間がかかる: " . number_format($duration, 6) . " 2番\n";
?>

上記の例では、SHA-512アルゴリズムを使用して、ラウンドパラメーターを介して暗号化の反復を5000に設定しました。ラウンド値を調整することにより、異なる暗号化強度の下で時間のかかる変化を観察できます。

ループを使用して複数のテストを実行して、平均を取得します

暗号化時間をより正確に評価するために、 Crypt()を複数回実行し、平均時間を計算できます。

 <?php
$password = 'TestPassword123';
$salt = '$6$rounds=5000$usesomesillystringforsalt$';
$iterations = 100;
$totalTime = 0;

for ($i = 0; $i < $iterations; $i++) {
    $start = microtime(true);
    crypt($password, $salt);
    $end = microtime(true);
    $totalTime += ($end - $start);
}

$averageTime = $totalTime / $iterations;

echo "平均加密時間がかかる($iterations 二流): " . number_format($averageTime, 6) . " 2番\n";
?>

このようにして、時折のシステムの変動によって引き起こされるエラーを排除し、暗号化時間をより正確に評価することができます。

オンラインデモンストレーションとデバッグ

これらのテストスクリプトを独自のサーバーに展開するか、オンラインPHP実行環境を使用できます。テストWebサイトに展開する場合は、スクリプトをhttps://www.m66.net/test/crypt_time.phpなどのパスにアップロードして、サーバーがCLIまたはWeb環境でPHPスクリプトを実行できるようにします。

まとめ

Crypt()は、PHPが提供する強力な暗号化ツールですが、選択したアルゴリズムと反復数に依存するには時間がかかります。マイクロ秒レベルの時間測定により、暗号化プロセスのパフォーマンスを合理的に評価できます。これは、システムのセキュリティとパフォーマンスの調整に重要です。実際のアプリケーションでは、システム機能とセキュリティのニーズに基づいて、セキュリティとパフォーマンスのバランスをとるために、セキュリティのニーズに基づいて、暗号化パラメーターを合理的に選択してください。