web3通过keystore+密码解锁账号
1. keystore+密码解锁账号通过keystore+密码解锁账号需要使用web3.js的如下API,相当于解密keystoreAPIweb3.eth.accounts.decrypt(keystoreJsonV3, password);参数keystoreJsonV3 - String: 要解密私钥的keystore。password - String: 加密keystor...
·
1. keystore+密码解锁账号
通过keystore+密码解锁账号需要使用web3.js的如下API,相当于解密keystore
API
- web3.eth.accounts.decrypt(keystoreJsonV3, password);
参数
- keystoreJsonV3 - String: 要解密私钥的keystore。
- password - String: 加密keystore文件的密码,一般为创建账号时的密码。
返回值
- Object:解密的帐户对象。
示例
web3.eth.accounts.decrypt({
version: 3,
id: '04e9bcbb-96fa-497b-94d1-14df4cd20af6',
address: '2c7536e3605d9c16a7a3d7b1898e529396a65c23',
crypto: {
ciphertext: 'a1c25da3ecde4e6a24f3697251dd15d6208520efc84ad97397e906e6df24d251',
cipherparams: { iv: '2885df2b63f7ef247d753c82fa20038a' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt: '4531b3c174cc3ff32a6a7a85d6761b410db674807b2d216d022318ceee50be10',
n: 262144,
r: 8,
p: 1
},
mac: 'b8b010fff37f9ae5559a352a185e86f9b9c1d7f7a9f1bd4e82a5dd35468fc7f6'
}
}, 'test!');
> {
address: "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23",
privateKey: "0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae468d01a3f362318",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
......
let fs = require("fs")
module.exports = {
......
unlockAccountWithKeystore: async (ctx) => {
//1. 获取前端传递的数据,包括keystore、密码
let password = ctx.request.body.password
console.log(password)
let keystore = ctx.request.files.file
console.log(keystore)
//2.读取缓存文件中keystore的数据
let keystoreData = fs.readFileSync(keystore.path, "utf8")
console.log(keystoreData)
//3. 通过keystore和密码解锁账户
let account = web3.eth.accounts.decrypt(JSON.parse(keystoreData), password)
console.log(account)
//4.将账户信息返回给前端
ctx.body = await setResponseData(account)
},
}
//通过Keystore解锁账户
function unlockAccountWithKeystore() {
var filedata = $("#unlock-accoutn-file").val()
if (filedata.length <= 0) {
alert("请选择文件!")
return
}
//文件上传通过Formdata去储存文件的数据
var data = new FormData()
data.append("file", $("#unlock-accoutn-file")[0].files[0])
data.append("password", $("#unlock-account-password").val())
var urlStr = "/unlock/keystore"
$.ajax({
url: urlStr,
type: "post",
dataType: "json",
contentType: false,
data: data,
processData: false,
success: function (res, status) {
alert(JSON.stringify(res)+status)
if (res.code == 0) {
//将服务端返回的账户信息显示到页面
//configAccountInfo(res.data)
}
},
error: function (res, status) {
alert(JSON.stringify(res)+status)
}
})
}
更多推荐



所有评论(0)