English | 简体中文 | 繁體中文
查询

sodium_crypto_sign()函数—用法及示例

「 生成签名和验证签名 」


函数名:sodium_crypto_sign()

适用版本:PHP 7.2.0以上

函数描述:sodium_crypto_sign()用于生成签名和验证签名。该函数使用Ed25519数字签名算法,可确保消息的完整性和身份验证。

用法:

  1. 生成签名: 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);
    
  2. 验证签名: 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

补充纠错
热门PHP函数
分享链接