函数名称:sodium_crypto_sign_detached()
函数描述:sodium_crypto_sign_detached() 函数使用私钥对消息进行数字签名,并返回签名的消息摘要。
适用版本:PHP 7.2.0 及以上版本
用法:
string sodium_crypto_sign_detached ( string $message , string $secret_key )
参数:
- $message:要签名的消息,类型为字符串。
- $secret_key:用于签名的私钥,类型为字符串。
返回值:
- 返回一个消息摘要的字符串,长度为64字节。
示例:
// 生成公钥和私钥对
$keyPair = sodium_crypto_sign_keypair();
// 获取私钥
$secretKey = sodium_crypto_sign_secretkey($keyPair);
// 获取公钥
$publicKey = sodium_crypto_sign_publickey($keyPair);
// 要签名的消息
$message = "Hello, World!";
// 使用私钥对消息进行签名
$signature = sodium_crypto_sign_detached($message, $secretKey);
// 验证签名的有效性
if (sodium_crypto_sign_verify_detached($signature, $message, $publicKey)) {
echo "签名有效";
} else {
echo "签名无效";
}
注意事项:
- sodium_crypto_sign_detached() 函数使用私钥对消息进行签名,并返回签名的消息摘要。签名后的消息摘要可以与原始消息一起传输,并通过 sodium_crypto_sign_verify_detached() 函数进行验证。
- 私钥和公钥可以使用 sodium_crypto_sign_keypair() 函数生成。
- 在验证签名时,需要使用公钥和原始消息。如果验证成功,返回 true;否则,返回 false。
- sodium_crypto_sign_detached() 函数返回的消息摘要长度固定为64字节,可以通过 sodium_crypto_sign_BYTES 参数获取。
- sodium_crypto_sign_detached() 函数仅支持 Ed25519 签名算法。
- 在使用 sodium_crypto_sign_detached() 函数时,确保私钥的安全存储和传输,以防止私钥泄露,避免数字签名被伪造。