繁体   English   中英

如何使用公钥验证数字签名?

[英]How to verify digital signature with public key?

我正在做一个关于加密货币的项目。 我为一个用户提供了一对公钥和私钥。 这是我签署数据的方式:

sig = this.hash(trans.details +trans.privKey);

提供了哈希函数。 我的问题是如何使用给定的公钥验证此签名?

我试过这个

var v = this.hash(trans.details+"");

: var v2=this.hash(sig+trans.pubKey); 我比较了这两个哈希值,它们不一样。 据我所知,有一种方法可以让这些相互匹配,这样我就可以说签名是有效的。

注意:本项目中给出了公钥和私钥。 所以他们应该是正确的。

我错过了什么? 有任何想法吗?

你不能。 该签名方案不起作用。

私钥与其对应的公钥之间的联系仅存在于生成这些密钥的加密算法中。 (例如,如果您有 RSA 密钥对,则需要使用 RSA 算法来生成签名。)将私钥插入通用哈希函数中没有任何意义。

一般来说,签名是通过对要签名的数据进行未加盐散列,然后使用私钥对结果散列进行加密来生成的,例如

let signature = RSA_encrypt(H(message), private_key)

然后可以使用公钥解密哈希,证明它是使用适当的私钥生成的:

let signature_ok = equal(H(message), RSA_decrypt(signature, public_key))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM