PHPでは、 Crypt()関数がパスワードを暗号化するためによく使用されます。セキュリティ関連のアプリケーションでは、標準のDES、MD5、SHA-256、SHA-512などのさまざまなアルゴリズムをサポートしています。特に、システムのパフォーマンスを評価したり、パスワードハッシュコストコントロールを実行する場合は、 Crypt()関数の実行時間を理解することが非常に重要です。
この記事では、PHPを介してCrypt()機能の暗号化時間を測定し、実用的な例を紹介する方法を紹介します。
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が提供する強力な暗号化ツールですが、選択したアルゴリズムと反復数に依存するには時間がかかります。マイクロ秒レベルの時間測定により、暗号化プロセスのパフォーマンスを合理的に評価できます。これは、システムのセキュリティとパフォーマンスの調整に重要です。実際のアプリケーションでは、システム機能とセキュリティのニーズに基づいて、セキュリティとパフォーマンスのバランスをとるために、セキュリティのニーズに基づいて、暗号化パラメーターを合理的に選択してください。