【PHP8.x】sodium_crypto_stream_xchacha20_xor_ic関数の使い方
sodium_crypto_stream_xchacha20_xor_ic関数は、XChaCha20ストリーム暗号アルゴリズムを用いて、指定されたデータストリームに対して排他的論理和(XOR)による暗号化または復号化を実行する関数です。
この関数は、主に大量のデータや、ネットワーク経由で送受信されるようなストリーミングデータを安全に扱うために設計されています。高いセキュリティと優れた処理速度を両立したXChaCha20アルゴリズムを利用することで、データの機密性を確実に保護します。特に、Nonce(ナンス:各暗号化操作で一度だけ使用するランダムな値)のサイズが大きいため、Nonceの重複によるセキュリティリスクが低減される点が特徴です。
関数名のxor_ic
は、データの暗号化・復号化が、鍵ストリームとメッセージとのビット単位のXOR演算によって行われること、そしてic
(initial counter)として初期カウンタ値を指定できることを示しています。この初期カウンタを指定することで、同じ鍵とNonceを使用している場合でも、データの特定の部分だけを暗号化・復号化することが可能になります。これにより、ファイルの一部をランダムに読み書きするような、より柔軟なデータ処理が実現されます。
この関数は、処理対象のデータ(メッセージ)、共通鍵、一度だけ使用するNonce、そして初期カウンタを引数として受け取ります。そして、処理後のデータ(暗号化されたデータ、または復号化された平文)をバイナリ文字列として返します。データを安全に送受信・保存するシステムを構築する上で、非常に重要な役割を果たす関数であり、鍵とNonce、初期カウンタの適切な管理がセキュリティ上不可欠です。
基本的な使い方
構文(syntax)
1<?php 2function sodium_crypto_stream_xchacha20_xor_ic( 3 string $message, 4 string $nonce, 5 string $key, 6 int $initial_counter 7): string {}
引数(parameters)
string $message, string $nonce, int $counter, string $key
- string $message: 暗号化または復号化するメッセージを指定する文字列
- string $nonce: Nonce(使い捨ての乱数)を指定する文字列。一意であることが必須です。
- int $counter: カウンター値を指定する整数。チャネル間での状態管理に使用します。
- string $key: 暗号化または復号化に使用する鍵を指定する文字列。
戻り値(return)
string
指定されたキーと初期値(nonce)、追加データ(additional_data)を使用して、平文(plaintext)を暗号化または復号した結果の文字列を返します。