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

作成日: 更新日:

sodium_crypto_box関数は、PHPのsodium拡張機能が提供する、メッセージを安全に暗号化し、認証を行うための強力な関数です。この関数は、送信者と受信者の間で、公開鍵と秘密鍵のペアを用いることで、第三者に内容を知られることなく、かつメッセージが改ざんされていないことを保証する安全な通信を実現します。

具体的には、送信者は自身の秘密鍵と受信者の公開鍵、そして一意の使い捨ての値であるnonce(ノンス)を使用してメッセージを暗号化します。これにより、メッセージの機密性が保たれるだけでなく、そのメッセージが正当な送信者によって送られ、途中で内容が変更されていないことを受信側で検証することが可能です。

システムエンジニアを目指す方にとって、WebアプリケーションやAPIにおける機密データの送受信において、この関数は堅牢なセキュリティを簡単に実装するための重要なツールとなります。高度な暗号技術の専門知識がなくても、安全な通信チャネルを確立できる点が大きな特長です。

基本的な使い方

構文(syntax)

1<?php
2
3// 暗号化したいメッセージ
4$message_to_encrypt = 'This is a secret message.';
5
6// 暗号化に使用する一意のナンス(ランダムな値)
7$nonce_for_box = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES);
8
9// 送信者の秘密鍵と受信者の公開鍵を準備
10// 実際のアプリケーションでは、これらの鍵は安全な方法で生成・交換されます。
11$sender_secret_key = sodium_crypto_box_secretkey(sodium_crypto_box_keypair());
12$recipient_public_key = sodium_crypto_box_publickey(sodium_crypto_box_keypair());
13
14// sodium_crypto_box 関数で使用するためのキーペアを生成
15// これは送信者の秘密鍵と受信者の公開鍵を組み合わせたものです。
16$box_key_pair = sodium_crypto_box_keypair_from_secretkey_and_publickey(
17    $sender_secret_key,
18    $recipient_public_key
19);
20
21// sodium_crypto_box 関数の呼び出し構文
22$encrypted_data = sodium_crypto_box(
23    $message_to_encrypt,
24    $nonce_for_box,
25    $box_key_pair
26);

引数(parameters)

string $message, string $nonce, string $key_pair

  • string $message: 暗号化するメッセージを指定する文字列
  • string $nonce: ナンス(nonce)を指定する文字列。各メッセージで一意である必要があります。
  • string $key_pair: 復号に必要な公開鍵と秘密鍵のペアを指定する文字列。sodium_crypto_box_keypair() などで生成されます。

戻り値(return)

string

暗号化されたメッセージ文字列を返します。

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