PHP Conference Japan 2024

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
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);

//--------------------------------------------------
// 第一人,签名

$message = 'Hello';

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

//--------------------------------------------------
// 第二人,验证

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

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

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