sodium_crypto_aead_chacha20poly1305_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_encrypt使用 ChaCha20-Poly1305 进行加密然后身份验证

描述

sodium_crypto_aead_chacha20poly1305_encrypt(
    #[\SensitiveParameter] string $message,
    string $additional_data,
    string $nonce,
    #[\SensitiveParameter] string $key
): string

使用 ChaCha20-Poly1305 进行加密然后身份验证。

参数

message

要加密的明文消息。

additional_data

附加的、经过身份验证的数据。这用于验证附加到密文的身份验证标签,但不会加密或存储在密文中。

nonce

每个消息只能使用一次的数字。长度为 8 字节。

key

加密密钥(256 位)。

返回值

如果成功,则返回密文和标签,否则返回 false

添加笔记

用户贡献的笔记 1 条笔记

alain at fuz dot org
1 年前
一个翻转/翻转单元测试,为您提供示例

<?php

use PHPUnit\Framework\TestCase;

class
SodiumTest extends TestCase
{
public function
testSodium()
{
// 或 32 个密码学安全字节
// 将密钥与应用程序中的其他机密安全地存储
$key = sodium_crypto_aead_xchacha20poly1305_ietf_keygen();

// 8 字节的 nonce 应与密文一起存储(将在解密时需要)
// 它不敏感,您可以只是将其预先附加在密文之前。
$nonce = random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES);

$flip = 'Hello, world!';
$ciphertext = sodium_crypto_aead_chacha20poly1305_encrypt($flip, $nonce, $nonce, $key);
$flop = sodium_crypto_aead_chacha20poly1305_decrypt($ciphertext, $nonce, $nonce, $key);

$this->assertEquals($flip, $flop);
}
}

?>

旁注:nonce 在此测试中使用了两次,但您可以在 `$additional_data` 中使用用户名、标识符或您喜欢的任何内容。
To Top