这是一个关于如何使用 sodium_crypto_aead_chacha20poly1305_ietf_encrypt() 的快速示例;其中你有一个密钥用于加密和解密。
<?php
$key = sodium_crypto_aead_chacha20poly1305_ietf_keygen();
//--------------------------------------------------
// 加密
$message = 'hello';
$nonce = random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES);
$encrypted = sodium_crypto_aead_chacha20poly1305_ietf_encrypt($message, $nonce, $nonce, $key);
echo base64_encode($encrypted) . "\n";
//--------------------------------------------------
// 解密
$decrypted = sodium_crypto_aead_chacha20poly1305_ietf_decrypt($encrypted, $nonce, $nonce, $key);
echo $decrypted . "\n";
?>
并且,为了确认,$nonce 被使用了两次 - 第一次是在认证标记 ($ad) 中
https://twitter.com/craigfrancis/status/949614546259513344