РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1275 of 1593 menu

Функция 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
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить