PHP Conference Japan 2024

sodium_crypto_sign_detached

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_detached簽署訊息

說明

sodium_crypto_sign_detached(字串 $message, #[\SensitiveParameter] 字串 $secret_key): 字串

使用私鑰簽署訊息,可以使用對應的公鑰驗證。此函式會傳回分離式簽章。

參數

message

要簽署的訊息。

secret_key

私密金鑰。參見 sodium_crypto_sign_secretkey()

回傳值

加密簽章。

新增註解

使用者貢獻的註解 2 則註解

craig at craigfrancis dot co dot uk
6 年前
以下是如何使用 sodium_crypto_sign_detached() 的快速範例;您有一則想要簽署的訊息,以便任何擁有公鑰的人都可以確認訊息未遭竄改。

這類似於 sodium_crypto_sign(),但返回的字串不包含原始訊息,它只是一個簽章。

<?php

// $sign_seed = random_bytes(SODIUM_CRYPTO_SIGN_SEEDBYTES);
// $sign_pair = sodium_crypto_sign_seed_keypair($sign_seed);

$sign_pair = sodium_crypto_sign_keypair();
$sign_secret = sodium_crypto_sign_secretkey($sign_pair);
$sign_public = sodium_crypto_sign_publickey($sign_pair);

//--------------------------------------------------
// 發送者 1,簽署

$message = 'Hello';

$signature = sodium_crypto_sign_detached($message, $sign_secret);

//--------------------------------------------------
// 接收者 2,驗證

$message_valid = sodium_crypto_sign_verify_detached($signature, $message, $sign_public);

if (!
$message_valid) {
exit(
'訊息已被更改。');
}

?>
cb at dialogs dot com
4 年前
對於那些(像我一樣)對 sodium_crypto_sign() 與 sodium_crypto_sign_detached() 感到困惑的人

來自 libsodium 文件 https://libsodium.gitbook.io/doc/public-key_cryptography/public-key_signatures

crypto_sign() 函式會將簽章加在訊息前面「合併模式」

在「分離模式」下,儲存簽章時不會附加原始訊息的副本。
To Top