在以太坊的开发中,我们常常需要使用到加密和解密的操作。ethjs-signer 便是一个 npm 包,它提供了一系列方便的加密和解密方法,方便我们在以太坊应用中进行签名,验证签名,加密和解密操作。本文将详细介绍 ethjs-signer 的使用教程。
安装
使用 npm 包管理器即可方便的进行安装:
npm install ethjs-signer
签名
我们先来看一个简单的签名操作:
-- -------------------- ---- ------- ----- --- - ----------------- ----- --------- - ------------------------ ----- ------- - ------ ------- ----- ---------- - --------------------------------------------------------------------- ----- --- - --- ------- ------------------------------------------- ----- ------- - ------------------- ------------ ------------------- ---------- ---------
这里我们使用了 ethjs 和 ethjs-signer 包,对于 const message
,它是要被签名的信息;对于 const privateKey
,它是区块链地址对应的私钥。使用 EthSigner.sign
方法即可完成签名的操作,返回签名后的地址。
验证签名
验证签名的操作通常会用到签名、原始消息和签名后的地址。这里我们用到了一个别名 hexToBytes
以将原始消息转换成 buffer。
-- -------------------- ---- ------- ----- --- - ----------------- ----- --------- - ------------------------ ----- ------- - ------ ------- ----- ---------- - --------------------------------------------------------------------- ----- --- - --- ------- ------------------------------------------- ----- ------- - ------------------- ------------ ----- --------- - -------------------------------------------------------------- ------- ------------ ----- - - ------------------ ---- ----- - - ------------------- ---- ----- - - -------------- ----- ----------------- - ------------------------ ----- ----------------- - ------------------------------------------- ------------------- ------- -- -------- --------------------------------------------- -- -- -- ----------
使用 EthSigner.signMsgHash
方法进行签名,这个方法会按照以太坊标准将签名后的信息格式化为 r, s, v 形式。然后使用 EthSigner.isValidSignature
方法校验签名是否正确。
加密和解密
最后,我们看一下如何使用 ethjs-signer 进行加密和解密的操作。
-- -------------------- ---- ------- ----- --- - ----------------- ----- --------- - ------------------------ ----- ------- - ------ ------- ----- ---------- - --------------------------------------------------------------------- ----- --- - --- ------- ------------------------------------------- ----- ------- - ------------------- ------------ ----- ------- - ----------------------------- --------------------------- ----- --------- - -------------------------- ---------------------------------------------------------------------- ---------------------- ---------- ----------- ----- --------- - ---------------------------- ------------ ----- ------- - ----------------------------- --- -------------------------- ----------- ---------------------- ---------- ---------
这里我们使用了 ethjs 和 ethjs-signer 包,对于 const encoded
,它是要被加密的消息。使用 Eth.ABI.rawEncode
方法可以方便的将任意类型的信息编码为 hex 形式。使用 EthSigner.encrypt
方法将加密信息发送给特定的区块链地址。使用 EthSigner.decrypt
方法可以将信息解密,并使用 Eth.ABI.rawDecode
方法解码信息。
总结
通过本文我们了解了 ethjs-signer 这个 npm 包的使用方法以及相应的签名、验证签名、加密和解密操作。这个包在以太坊开发中提供了方便的功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/57440