sodium_crypto_sign_detached

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_detached对消息进行签名

描述

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

使用私钥对消息进行签名,可以使用相应的公钥进行验证。此函数返回一个分离的签名。

参数

message

要签名的消息。

secret_key

私钥。参见 sodium_crypto_sign_secretkey()

返回值

密码签名。

添加备注

用户贡献备注 2 备注

1
craig at craigfrancis dot co dot uk
5 年前
以下是一个关于如何使用 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);

//--------------------------------------------------
// Person 1, signing

$message = 'Hello';

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

//--------------------------------------------------
// Person 2, verifying

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

if (!
$message_valid) {
exit(
'Message has been changed.');
}

?>
0
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