在智能合约的开发中,验证签名是非常常用的一种身份验证手段,那么该如何进行签名,又该如何进行签名验证呢?本篇文章将会涉及到一些密码学的知识以及 solidity 部分代码。 开始读文章之前需要了解的两个小知识点encode 和 encodePackage的区别?两个都是solidity自带的打包方法,不同的是encodePackage打包结果中不会补 0,encode 打包之后会补 0,这意味着,如果使用 encodePackage 打包【“aa”,”bb”】的得到的结果与 【“a”,“abb”】打包之后的结果是一样的。这是我们不想看到的,但是encode 不会出现这种情况。所以在使用时要注意这个点,防止出现漏洞。非对称加密是什么?公开密钥密码学(英语:Public-key cryptography)也称非对称式密码学(英语:Asymmetric cryptography)是密码学的一种演算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作加密,私钥则用作解密。使用公钥把明文加密后所得的密文,只能用相对应的私钥才能解密并得到原本的明文,最初用来加密的公钥不能用作解密。由...