查询

sodium_crypto_sign_verify_detached()函数—用法及示例

「 验证签名是否与消息和公钥匹配 」


函数名称:sodium_crypto_sign_verify_detached()

函数描述:该函数用于验证签名是否与消息和公钥匹配。

适用版本:PHP 7.2.0 及以上版本。

用法:

bool sodium_crypto_sign_verify_detached(
    string $signature,
    string $message,
    string $publicKey
)

参数:

  • $signature: 要验证的签名,必须为64字节的二进制字符串。
  • $message: 要验证的消息,可以是任意长度的字符串。
  • $publicKey: 用于验证签名的公钥,必须为32字节的二进制字符串。

返回值:

  • 如果签名与消息和公钥匹配,则返回true;否则返回false。

示例:

$message = "Hello, world!";
$signature = hex2bin("a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2");
$publicKey = hex2bin("1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef");

if (sodium_crypto_sign_verify_detached($signature, $message, $publicKey)) {
    echo "Signature is valid.";
} else {
    echo "Signature is not valid.";
}

注意事项:

  • 在使用此函数之前,需要确保已经安装并启用了 Sodium 扩展。
  • 签名和公钥必须是二进制字符串,可以使用hex2bin()函数将十六进制字符串转换为二进制字符串。
  • 签名的长度必须为64字节,公钥的长度必须为32字节。
  • 为了确保安全性,公钥应该是由可靠的密钥生成函数生成的,并且只有签名者和验证者知道该公钥。
  • 此函数用于验证签名,不会对消息进行解密。
补充纠错
热门PHP函数