V4 keystore single
本例演示如何加密和解密 keystore V4 single。
從 @kaiachain/ethers-ext/v5 軟件包中導入錢包類。
定義加密keystore 版本 4
指定密鑰存儲的當前密碼和新密碼。
使用當前密碼加載密鑰庫
解密後,您可以訪問公鑰和私鑰。
您可以使用解密密鑰和新密碼生成新的密鑰存儲。 請注意,新的加密密鑰將是 keystore v3。
檢查新的密鑰庫 public 和 private 密鑰,它將與原始密鑰庫不同,因為密鑰庫 v3 ** 不支持 klaytn 賬戶系統。
keystoreV4-single.js
const { Wallet } = require("@kaiachain/ethers-ext/v5");// Klaytn V4 with one key. kcn account new --lightkdfconst encryptedKey = `{ "address":"ec5eaa07b4d3cbafe7bf437a1ea9a898209f617c", "keyring":[ [ { "cipher":"aes-128-ctr", "ciphertext":"0a5aa3749b9e83c2a4238445aeb66f59355c0363a54c163e34e454f76e061e47", "cipherparams":{"iv":"2a0b2e02a61e0f721bd800ea6e23a588"}, "kdf":"scrypt", "kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"538ead57745bcd946b05fe294de08256628d9a0a393fd29ced933ba5fc045b07"}, "mac":"30b5488bc97165bc7ecac8ff8dfec65a75a8ad206450aecff0ac2dfea6f79b08" } ] ], "id":"362c0766-f5e3-4b4d-af22-7e89d5fb613a", "version":4}`;const password = "password";const newPassword = "newPassword";async function main() { const account = Wallet.fromEncryptedJsonSync(encryptedKey, password); console.log("decrypted (address, privateKey)"); console.log(account.klaytnAddr, ", ", account.privateKey); const v3encryptedKey = await account.encrypt(newPassword); const newAccount = Wallet.fromEncryptedJsonSync(v3encryptedKey, newPassword); console.log("\ndecrypted (address, privateKey) with new password"); console.log(newAccount.address, ", ", newAccount.privateKey);}main();
output
❯ node keystoreV4-single.jsdecrypted (address, privateKey)0xec5eaa07b4d3cbafe7bf437a1ea9a898209f617c , 0x4062512193ef1dab8ccf3e3d7a4862e3c740bdf11d852954ed48bc73643e354fdecrypted (address, privateKey) with new password0xEc5eAa07b4d3CbAfe7bf437a1Ea9A898209F617c , 0x4062512193ef1dab8ccf3e3d7a4862e3c740bdf11d852954ed48bc73643e354f