函式名稱: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";
注意事項:
- 每次加密都需要使用一個唯一的$nonce,否則會導致安全性問題,因此應確保生成的$nonce是隨機且唯一的。
- 金鑰$key應該是一個隨機生成的字串,並且在加密和解密過程中保持不變。
- 加密後的密文是一個二進位制字串,可以使用base64_encode()函式進行編碼以便於傳輸或儲存。
- 解密密文時,需要使用相同的$nonce和$key才能成功解密並還原原始訊息。
熱門工具排行榜