PHPで安全なデータ暗号化を実現する際に役立つのが、Libsodiumライブラリのcrypto_stream()
関数です。この関数を使えば、秘密鍵とnonce(ランダム値)を使用して暗号化されたデータストリームを生成できます。大きなデータや連続的にデータを扱う際に非常に便利です。
関数の構文
string crypto_stream(int $length, string $nonce, string $key);
length
: 暗号化ストリームの長さ(バイト単位)。nonce
: 各暗号化操作に一度だけ使われるランダムな値(nonce)。key
: 秘密鍵。安全な暗号化を行うために使われるキーです。
この関数は指定された長さの暗号化されたストリームを生成します。nonce
とkey
の組み合わせが同じであれば、同じストリームが生成されます。
使い方の例
次に、crypto_stream()
を使って暗号化ストリームを生成する簡単な例を紹介します。
// ランダムな秘密鍵とnonceを生成
$key = random_bytes(SODIUM_CRYPTO_STREAM_KEYBYTES);
$nonce = random_bytes(SODIUM_CRYPTO_STREAM_NONCEBYTES);
// 暗号化ストリームを生成
$length = 64; // ストリームの長さ(バイト)
$stream = sodium_crypto_stream($length, $nonce, $key);
echo bin2hex($stream); // 暗号化ストリームを表示
この例では、64バイト長の暗号化されたデータストリームを生成し、bin2hex()
を使ってそれを16進数で表示しています。
まとめ
crypto_stream()
は、安全な暗号化ストリームを作成するための強力なツールです。特に、データのストリーム処理や大容量データを扱う際に、効率的かつ安全に暗号化を行いたい場合に役立ちます。