【PHP8.x】sodium_crypto_stream関数の使い方

作成日: 更新日:

sodium_crypto_stream関数は、ストリーム暗号化処理に利用できる擬似乱数バイト列を生成する関数です。この関数は、指定された長さの、暗号学的に安全なランダムなバイト列を生成します。

主にストリーム暗号(例えばSalsa20やChaCha20)において、データの暗号化や復号に必要な鍵ストリームの一部を生成するために使用されます。また、他の暗号処理におけるノンス(Number Used Once、一度だけ使用される値)や、予測不可能な安全なデータが必要な場面でも活用できます。

引数として、生成したいバイト列の長さを指定する$length、暗号処理のたびに異なるユニークな値であるノンスを指定する$nonce、そして暗号化に使用する秘密鍵である$keyを受け取ります。$nonceは、同じ鍵で複数回この関数を使用する際に使い回すとセキュリティ上の脆弱性につながるため、必ず異なる値を指定する必要があります。$keyは、外部に漏洩しないよう厳重に管理することが求められます。

この関数によって生成されるバイト列は、指定された鍵とノンスに基づき、常に予測不可能なため、高いセキュリティが保証されます。戻り値として、指定した長さの、暗号学的に安全なバイト列を返します。

基本的な使い方

構文(syntax)

1$keystream = sodium_crypto_stream(
2    int $length,
3    string $nonce,
4    string $key
5);

引数(parameters)

int $length, string $nonce, string $key

  • int $length: 生成する暗号化ストリームのバイト長を指定する整数
  • string $nonce: 一意性を保証するためのノンス(nonce)を指定する文字列。同じキーとノンスの組み合わせで同じ平文を暗号化しても、異なる暗号文が生成されます。
  • string $key: 暗号化に使用する秘密鍵を指定する文字列。

戻り値(return)

string

暗号化されたデータが文字列として返されます。

【PHP8.x】sodium_crypto_stream関数の使い方 | いっしー@Webエンジニア