Функция ed25519.Sign
Функция ed25519.Sign создает криптографическую подпись для сообщения,
используя алгоритм Ed25519. Первым параметром она принимает закрытый ключ
(срез байтов длиной ed25519.PrivateKeySize), вторым - сообщение для подписи
(срез байтов). Функция возвращает подпись в виде среза байтов длиной
ed25519.SignatureSize (64 байта). Подпись может быть проверена
с помощью функции ed25519.Verify с использованием соответствующего
открытого ключа.
Синтаксис
ed25519.Sign(privateKey, message)
Пример
Давайте сгенерируем ключевую пару, подпишем сообщение
"Hello, World!" и выведем полученную подпись в шестнадцатеричном формате:
package main
import (
"crypto/ed25519"
"crypto/rand"
"encoding/hex"
"fmt"
)
func main() {
// Generate a key pair
publicKey, privateKey, err := ed25519.GenerateKey(rand.Reader)
if err != nil {
panic(err)
}
// Message to sign
message := []byte("Hello, World!")
// Sign the message
signature := ed25519.Sign(privateKey, message)
// Verify the signature
isValid := ed25519.Verify(publicKey, message, signature)
fmt.Println("Signature (hex):", hex.EncodeToString(signature))
fmt.Println("Valid:", isValid)
}
Результат выполнения кода:
"Signature (hex): 1234567890abcdef..."
"Valid: true"
Пример
Попробуем подписать сообщение "12345" и затем изменить его,
чтобы показать, что проверка подписи не пройдет:
package main
import (
"crypto/ed25519"
"crypto/rand"
"fmt"
)
func main() {
// Generate a key pair
_, privateKey, err := ed25519.GenerateKey(rand.Reader)
if err != nil {
panic(err)
}
// Original message
message1 := []byte("12345")
signature := ed25519.Sign(privateKey, message1)
// Tampered message
message2 := []byte("12346")
// Recover public key from private key
publicKey := privateKey.Public().(ed25519.PublicKey)
// Verify original signature with tampered message
isValid := ed25519.Verify(publicKey, message2, signature)
fmt.Println("Verification with tampered message:", isValid)
}
Результат выполнения кода:
"Verification with tampered message: false"
Смотрите также
-
функцию
ed25519.GenerateKey,
которая генерирует новую ключевую пару Ed25519 -
функцию
ed25519.Verify,
которая проверяет подпись Ed25519 -
функцию
ecdsa.Sign,
которая создает подпись ECDSA -
функцию
rsa.SignPKCS1v15,
которая создает подпись RSA PKCS1v15