Функция ed25519.Verify

Функция ed25519.Verify проверяет, является ли цифровая подпись действительной для указанного сообщения и открытого ключа. Она возвращает true, если подпись верна, и false в противном случае. Первым параметром функция принимает открытый ключ в виде байтового среза, вторым параметром - сообщение для проверки, третьим - подпись, которую нужно проверить.

Синтаксис

goed25519.Verify(publicKey, message, signature)

Пример

Давайте создадим ключевую пару, подпишем сообщение и проверим подпись:

gopackage main

import (
  "crypto/ed25519"
  "fmt"
)

func main() {
  // Generate key pair
  publicKey, privateKey, err := ed25519.GenerateKey(nil)
  if err != nil {
    panic(err)
  }

  // Message to sign
  message := []byte("Hello, Ed25519!")

  // Sign the message
  signature := ed25519.Sign(privateKey, message)

  // Verify the signature
  res := ed25519.Verify(publicKey, message, signature)
  fmt.Println(res)
}

Результат выполнения кода:

gotrue

Пример

Давайте проверим подпись с изменённым сообщением:

gopackage main

import (
  "crypto/ed25519"
  "fmt"
)

func main() {
  // Generate key pair
  publicKey, privateKey, err := ed25519.GenerateKey(nil)
  if err != nil {
    panic(err)
  }

  // Original message
  message := []byte("Hello, Ed25519!")
  signature := ed25519.Sign(privateKey, message)

  // Tampered message
  tamperedMessage := []byte("Hello, Ed25519?")
  res := ed25519.Verify(publicKey, tamperedMessage, signature)
  fmt.Println(res)
}

Результат выполнения кода:

gofalse

Пример

Давайте проверим подпись с неправильным открытым ключом:

gopackage main

import (
  "crypto/ed25519"
  "fmt"
)

func main() {
  // Generate two different key pairs
  publicKey1, privateKey1, err := ed25519.GenerateKey(nil)
  if err != nil {
    panic(err)
  }
  publicKey2, _, err := ed25519.GenerateKey(nil)
  if err != nil {
    panic(err)
  }

  // Sign message with first private key
  message := []byte("Hello, Ed25519!")
  signature := ed25519.Sign(privateKey1, message)

  // Verify with second public key
  res := ed25519.Verify(publicKey2, message, signature)
  fmt.Println(res)
}

Результат выполнения кода:

gofalse

Смотрите также

  • функцию ed25519.GenerateKey,
    которая генерирует новую ключевую пару Ed25519
  • функцию ed25519.Sign,
    которая создаёт цифровую подпись Ed25519
  • функцию ecdsa.Verify,
    которая проверяет подпись ECDSA
  • функцию rsa.VerifyPKCS1v15,
    которая проверяет подпись RSA PKCS1v15