函数名称: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字节。
- 为了确保安全性,公钥应该是由可靠的密钥生成函数生成的,并且只有签名者和验证者知道该公钥。
- 此函数用于验证签名,不会对消息进行解密。