繁体   English   中英

无法验证服务器端使用客户端Javascript创建的RSA签名

[英]Fail to verify RSA signature on server side that was created using Javascript on client side

我在如下创建签名的客户端上使用伪造

//Client Side
var md = forge.md.sha256.create();
            md.update(encryptedVote, 'utf8');
            var pss = forge.pss.create({
            md: forge.md.sha256.create(),
            mgf: forge.mgf.mgf1.create(forge.md.sha256.create()),
            saltLength: 20
            });
            var signature = privateKey.sign(md, pss);

然后,稍后在服务器上,我尝试使用加密库如下验证签名。

#server side
user_public_key_loaded.verify(
            signature,
            enc_encrypted_vote,
            padding.PSS(
                mgf=padding.MGF1(hashes.SHA256()),
                salt_length=20
            ),
            hashes.SHA256()
        )

我始终收到无效的签名错误。 我尝试将客户端上的编码更改为md.update(encryptedVote, 'latin1'); 现在有时可以工作,而有些则不行。

知道我在做什么错吗?

我发现有时它会奏效,有时却没奏效。 在验证我通过执行my_list = list(my_dict.values())将JSON数据放入列表之前。 然后通过执行my_list[0]my_list[1]访问签名和投票。 显然,列表中数据的顺序是随机的,并且会不时变化。 因此,签名和投票在我的职能中转移了位置,有时它在其他方面没有起作用。

暂无
暂无

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

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