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

作成日: 更新日:

sodium_crypto_aead_aes256gcm_decrypt関数は、AES256-GCMという強力な暗号化アルゴリズムを使用して、暗号化されたデータを元の平文に復号する関数です。この関数は、PHPのSodium拡張機能の一部として提供されており、データの機密性だけでなく、改ざんされていないこと(完全性)も同時に検証できる認証付き暗号(AEAD)の機能を提供します。

システムにおいて、ユーザーの個人情報や機密性の高い通信内容などを安全に保護するためには、データの暗号化と復号が不可欠です。この関数は、すでにsodium_crypto_aead_aes256gcm_encrypt関数で暗号化されたデータを、正当な受信者が元の形に戻す際に利用されます。

復号を実行するには、暗号化されたデータ本体(ciphertext)、暗号化時に使用された再利用不可の短い値(nonce)、そして暗号化と復号に共通して使用される秘密の鍵(key)が必要です。また、暗号化時に認証済み追加データ(ad)が与えられていた場合は、復号時にも同じadを提供することで、そのデータも改ざんされていないかを確認できます。

これらの情報がすべて正しく一致し、データが改ざんされていないと確認できた場合、関数は復号された元の平文データを返します。もし、提供された情報が誤っている場合や、暗号化されたデータが途中で改ざんされていた場合は、データが安全でないと判断し、復号に失敗してfalseを返します。したがって、この関数を正しく利用することは、データのセキュリティを確保する上で非常に重要です。特にnonceの再利用は重大なセキュリティリスクを引き起こすため、細心の注意が必要です。

基本的な使い方

構文(syntax)

1<?php
2$decrypted_message = sodium_crypto_aead_aes256gcm_decrypt($ciphertext, $additional_data, $nonce, $key);

引数(parameters)

string $ciphertext, string $additional_data, string $nonce, string $key

  • string $ciphertext: 複合化する暗号化されたデータ
  • string $additional_data: 認証に使用される追加データ(平文)
  • string $nonce: 暗号化に使用された一意の番号
  • string $key: 複合化に使用する秘密鍵

戻り値(return)

string|false

指定されたキー、nonce、および追加認証データを使用して、暗号化されたデータを復号化します。復号化が成功した場合は複合化された文字列を返し、失敗した場合は false を返します。

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