函数名:sodium_crypto_sign()
适用版本:PHP 7.2.0以上
函数描述:sodium_crypto_sign()用于生成签名和验证签名。该函数使用Ed25519数字签名算法,可确保消息的完整性和身份验证。
用法:
生成签名: sodium_crypto_sign(string $message, string $secretKey): string 参数$message是要签名的消息,$secretKey是用于生成签名的私钥。函数返回生成的签名,以字符串形式表示。 示例:
$message = "Hello, world!"; $secretKey = sodium_crypto_sign_keypair_from_secretkey(base64_decode('your_secret_key')); $signature = sodium_crypto_sign($message, $secretKey); echo base64_encode($signature);
验证签名: sodium_crypto_sign_open(string $signature, string $publicKey): ?string 参数$signature是待验证的签名,$publicKey是用于验证签名的公钥。函数返回验证成功时返回原始消息,验证失败时返回null。 示例:
$message = "Hello, world!"; $signature = base64_decode('your_signature'); $publicKey = base64_decode('your_public_key'); $valid = sodium_crypto_sign_open($signature, $publicKey); if ($valid !== null) { echo "Signature is valid. Message: " . $valid; } else { echo "Invalid signature."; }
注意事项:
- 在生成签名之前,需要先生成密钥对(公钥和私钥)。可以使用sodium_crypto_sign_keypair_from_secretkey()函数从私钥派生密钥对。
- 公钥和私钥通常以Base64编码的字符串形式存储和传输。
- 签名生成和验证过程中,需要确保私钥的保密性,公钥可以公开使用。
更多关于sodium_crypto_sign()函数的信息,请参考PHP官方文档:https://www.php.net/manual/en/function.sodium-crypto-sign.php