[PHP]crypto_box_seal() 関数について解説!

PHP

こんにちは、皆さん!今回は、PHPの暗号化ライブラリ「libsodium」で提供される crypto_box_seal() 関数について詳しく解説します。この関数は、メッセージを受信者の公開鍵で暗号化し、他者が読み取れないように保護するために使用されます。

crypto_box_seal() 関数とは?

crypto_box_seal() 関数は、公開鍵暗号方式を使ってメッセージを暗号化するための関数です。暗号化されたメッセージは、受信者の秘密鍵を持つ者だけが復号することができます。このプロセスは、秘密鍵が攻撃者に漏れていない限り、メッセージの機密性を強力に保護します。

基本的な使い方

string sodium_crypto_box_seal(string $message, string $public_key)
  • $message: 暗号化したい元のメッセージ(平文)。
  • $public_key: 受信者の公開鍵。この鍵を使ってメッセージを暗号化します。

この関数は、公開鍵を使用してメッセージを暗号化し、その暗号文を返します。

  1. メッセージの暗号化
$public_key = sodium_crypto_box_publickey(sodium_crypto_box_keypair());

$message = "This is a top-secret message!";
$ciphertext = sodium_crypto_box_seal($message, $public_key);

echo "暗号化されたメッセージ: " . bin2hex($ciphertext) . "\n";

この例では、crypto_box_seal() 関数を使用してメッセージを受信者の公開鍵で暗号化しています。

  1. メッセージの復号

暗号化されたメッセージは、crypto_box_seal_open() 関数を使って受信者が復号します。

$secret_key = sodium_crypto_box_secretkey(sodium_crypto_box_keypair());
$decrypted_message = sodium_crypto_box_seal_open($ciphertext, $secret_key);

if ($decrypted_message === false) {
    echo "復号に失敗しました。\n";
} else {
    echo "復号されたメッセージ: " . $decrypted_message . "\n";
}

利用シーン

  • 安全なメッセージ送信: メッセージを第三者から保護し、受信者のみが読めるようにしたい場合に使用します。
  • データの機密性の確保: 送信者の秘密鍵を使わずに、受信者の公開鍵だけでメッセージを暗号化したい場合に便利です。

まとめ

crypto_box_seal() 関数は、公開鍵を使った安全なメッセージの暗号化に非常に役立ちます。受信者のみがメッセージを復号できるため、機密情報を送信する際に特に有効です。セキュリティが重視されるシステムで、ぜひ活用してみてください。

次回もお楽しみに!Happy coding!

タイトルとURLをコピーしました