Ana içeriğe geç

Mesajı Nasıl İmzalayıp Doğrulayıp

Ana işlevi bir anahtar çiftinin, mesajları, işlemleri imzalamak ve imzanın doğrulanmasına olanak tanımaktır. Bir imzanın doğrulanması, alıcının verilerin belirli bir özel anahtarın sahibi tarafından imzalandığından emin olmasını sağlar.

bilgi

Dikkat edilmesi gereken: Doğru ve güvenli bir imzalama işlemi için anahtar çiftlerinin gizliliğine önem verilmelidir.

import {
generateKeyPair,
signBytes,
verifySignature,
getUtf8Encoder,
getBase58Decoder,
} from "@solana/web3.js";

const keys = await generateKeyPair();
const message = getUtf8Encoder().encode("Merhaba, Dünya!");
const signedBytes = await signBytes(keys.privateKey, message);

const decoded = getBase58Decoder().decode(signedBytes);
console.log("İmza:", decoded);

const verified = await verifySignature(keys.publicKey, signedBytes, message);
console.log("Doğrulandı:", verified);

Solana Web3.js v1'de TweetNaCl kripto kütüphanesini kullanabiliriz:

import { Keypair } from "@solana/web3.js";
import nacl from "tweetnacl";
import { decodeUTF8 } from "tweetnacl-util";

const keypair = Keypair.fromSecretKey(
Uint8Array.from([
174, 47, 154, 16, 202, 193, 206, 113, 199, 190, 53, 133, 169, 175, 31, 56,
222, 53, 138, 189, 224, 216, 117, 173, 10, 149, 53, 45, 73, 251, 237, 246,
15, 185, 186, 82, 177, 240, 148, 69, 241, 227, 167, 80, 141, 89, 240, 121,
121, 35, 172, 247, 68, 251, 226, 218, 48, 63, 176, 109, 168, 89, 238, 135,
]),
);

const message = "Hızlı kahverengi tilki tembel köpeğin üzerine atlar";
const messageBytes = decodeUTF8(message);

const signature = nacl.sign.detached(messageBytes, keypair.secretKey);
const result = nacl.sign.detached.verify(
messageBytes,
signature,
keypair.publicKey.toBytes(),
);

console.log(result);
ipucu

Öneri: İmzanızın geçerliliğini düzenli olarak kontrol edin ve anahtar çiftlerini güvenli bir şekilde saklayın.


not

İlgi çekici bir not: Kullanıcılar, imza oluşturma işlemini özelleştirebilir ve farklı mesaj formatları deneyebilir.

tehlike

Potansiyel sıkıntılar: Anahtarların kaybolması ya da ele geçirilmesi durumunda, imzaların güvenliği tehdit altında olabilir.