牛牛在线工具

sodium_crypto_box()

收录 8868 个 PHP 函数,含用途说明与用法示例。

sodium_crypto_box()

使用公钥加密和私钥解密数据,基于 X25519 密钥交换和 XSalsa20-Poly1305 加密算法

函数名:sodium_crypto_box() 适用版本:PHP 7.2.0 及以上版本 用法:sodium_crypto_box() 函数用于使用公钥加密和私钥解密数据,基于 X25519 密钥交换和 XSalsa20-Poly1305 加密算法。 语法: string sodium_crypto_box(string $message, string $nonce, string $publicKey, string $secretKey) 参数: $message: 要加密的消息,为字符串类型。 $nonce: 用于加密的随机字符串,为字符串类型,长度为 sodium_crypto_box_NONCEBYTES 字节。 $publicKey: 公钥,为字符串类型,长度为 sodium_crypto_box_PUBLICKEYBYTES 字节。 $secretKey: 私钥,为字符串类型,长度为 sodium_crypto_box_SECRETKEYBYTES 字节。 返回值: 如果加密成功,则返回加密后的字符串,长度为消息长度加上 sodium_crypto_box_MACBYTES 字节。 如果加密失败,则返回 false。 示例: // 生成公钥和私钥 $keyPair = sodium_crypto_box_keypair(); $publicKey = sodium_crypto_box_publickey($keyPair); $secretKey = sodium_crypto_box_secretkey($keyPair); // 要加密的消息 $message = "Hello, world!"; $nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES); // 生成随机的 nonce // 使用公钥加密消息 $ciphertext = sodium_crypto_box($message, $nonce, $publicKey, $secretKey); // 使用私钥解密消息 $decryptedMessage = sodium_crypto_box_open($ciphertext, $nonce, $publicKey, $secretKey); // 输出结果 echo "加密后的消息: " . base64_encode($ciphertext) . "\n"; echo "解密后的消息: " . $decryptedMessage . "\n"; 注意事项: 在使用 sodium_crypto_box() 函数之前,需要先生成公钥和私钥对。可以使用 sodium_crypto_box_keypair() 函数来生成密钥对。 随机生成 nonce 是非常重要的,因为 nonce 在同一个密钥对下不能重复使用,否则会导致加密的安全性受损。 sodium_crypto_box() 函数的返回值是二进制字符串,如果需要在文本环境下传输或存储,可以使用 base64_encode() 函数进行编码。 使用 sodium_crypto_box_open() 函数对加密后的消息进行解密时,需要提供相同的 nonce、公钥和私钥。 如果解密失败,sodium_crypto_box_open() 函数会返回 false。 为了确保安全性,建议使用最新的 PHP 版本,并且在使用 sodium_crypto_box() 函数时,确保所有参数的长度和格式都正确。