查詢

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函式
分享連結