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

Javascript 如何使用公钥验证数字签名?,javascript,hash,cryptography,digital-signature,Javascript,Hash,Cryptography,Digital Signature,我正在做一个关于加密货币的项目。我为一个用户提供了一对公钥和私钥。 以下是我如何签署我的数据: sig = this.hash(trans.details +trans.privKey); 提供了哈希函数。 我的问题是如何用给定的公钥验证此签名 我试过这个 var v = this.hash(trans.details+""); :var v2=this.hash(sig+trans.pubKey) 我比较了这两个散列值,它们不一样。 据我所知,有一种方法可以使这些签名相互匹配,这样我就可以

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

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))

这是什么计划?如果这是一个简单的散列函数,那么就不可能有私钥和公钥,因为这不是它的工作原理。非常感谢您回答我的问题。我刚刚意识到哈希与签名无关。我检查了我的那对钥匙。它们是RSA密钥对,为了使用函数RSA_encrypt和RSA_decrypt,我应该导入什么?因为我在JavaScript中运行RSA_encrypt时遇到了一个未定义的错误。这不是真实的代码。我想说明的只是一般结构;编写代码(或者,最好选择要使用的库)取决于您。