查詢

sodium_crypto_secretbox()函式—用法及示例

「 對訊息進行加密,並生成一個密文 」


函式名稱:sodium_crypto_secretbox()

適用版本:PHP 7.2.0及以上版本

函式描述:sodium_crypto_secretbox()函式用於對訊息進行加密,並生成一個密文。它使用Xsalsa20和Poly1305演算法,提供了高階加密功能。

語法:sodium_crypto_secretbox(string $message, string $nonce, string $key): string|false

引數:

  • $message:要加密的訊息,必須是一個字串。
  • $nonce:一個隨機的24位元組字串,用於生成唯一的密文。必須確保每次加密使用的$nonce都是唯一的。
  • $key:一個32位元組的金鑰字串,用於加密和解密訊息。

返回值:

  • 如果加密成功,返回一個加密後的密文字串。
  • 如果加密失敗,返回false。

示例:

// 生成隨機的24位元組nonce
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);

// 生成32位元組的金鑰
$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);

// 要加密的訊息
$message = "Hello, world!";

// 加密訊息
$ciphertext = sodium_crypto_secretbox($message, $nonce, $key);

// 解密密文
$decrypted = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);

// 輸出加密後的密文和解密後的明文
echo "Ciphertext: " . base64_encode($ciphertext) . "\n";
echo "Decrypted: " . $decrypted . "\n";

注意事項:

  1. 每次加密都需要使用一個唯一的$nonce,否則會導致安全性問題,因此應確保生成的$nonce是隨機且唯一的。
  2. 金鑰$key應該是一個隨機生成的字串,並且在加密和解密過程中保持不變。
  3. 加密後的密文是一個二進位制字串,可以使用base64_encode()函式進行編碼以便於傳輸或儲存。
  4. 解密密文時,需要使用相同的$nonce和$key才能成功解密並還原原始訊息。
補充糾錯
熱門PHP函式
分享連結