以下是如何使用 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('訊息已被更改。');
}
?>