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

Функция ed25519.Verify

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

Синтаксис

ed25519.Verify(publicKey, message, signature)

Пример

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

package 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) }

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

true

Пример

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

package 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) }

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

false

Пример

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

package 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) }

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

false

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

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