首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用crypto++验证使用openssl生成的数据签名

使用crypto++验证使用openssl生成的数据签名
EN

Stack Overflow用户
提问于 2011-02-09 15:11:49
回答 1查看 3K关注 0票数 4

我有一个服务器,运行在python下,使用m2crypto签名消息m2crypto摘要--我使用openssl生成的公共和私有RSA密钥。在服务器端,一切正常

Python代码:

privateKey = M2Crypto.RSA.load_key(sys.argv2)

signedDigest =privateKey.sign(摘要,'sha256')

我再次确认签名是好的:

pubKey = M2Crypto.RSA.load_pub_key("key.pub.pem")

如果pubKey.verify(文摘,signedDigest,'sha256') (等等)

我将签名的sha256摘要存储在一个文件中,并将其与原始消息一起发送给客户端。

在客户端,在c++ vc6下运行,我加载签名的sha256摘要(二进制)和已签名的消息。现在的目标是与签名的sha256一起验证消息。我将密码作为静态链接,并且我知道它工作得很好,因为我可以计算sha256,并与来自python的具有相同结果的sha256进行比较。以下是代码:

RSA::PublicKey pubKey;

pubKey.Load( FileSource(LicenseControl::pubKeyPath,true));

RSASS< PKCS1v15,SHA >::验证者验证器(PubKey);

//shaDigest是新计算的sha256,signatureByte是从服务器接收的消息的签名

结果= verifier.VerifyMessage( shaDigest,CryptoPP::512 256::DIGESTSIZE,signatureByte,512);

这将编译并运行,但始终返回false。为了确保签名是有效的,我直接使用openssl (而不是通过m2crypto python包装器)验证它:

openssl -sha256 -verify key.pub.pem -signature original_file

验证确定

这证实了签名的sha256摘要没有问题,并且可以使用它来成功地使用公钥验证消息。我知道DER和PEM格式( openssl使用PEM,密码for使用PEM)。所以我相信公钥是正确的。现在我的问题是如何使用密码库来验证签名?我已经看过医生了,但经过几天之后,在我看来还是像中国人一样。我试过像

RSASS< PSSR,SHA >::验证者验证器(PubKey);

用PSSR加密python代码,但没有运气.我现在只考虑用公钥解密签名的sha256摘要,并将其与从接收文件中计算出来的新sha256摘要进行比较。但即使这么简单,我在医生身上也找不到.知道如何正确使用验证器吗?

如何使用公钥解密?万一以前的问题不能解决

EN

回答 1

Stack Overflow用户

发布于 2011-06-30 19:39:52

在此我认为有两个问题:

首先,SHA在RSASS< PKCS1v15, SHA >中的意思是SHA-1,而不是SHA_256.你会想要SHA256来代替。

另外,VerifyMessage接收整个消息,而不仅仅是哈希--哈希是在内部为您计算的。所以现在,当您试图验证消息时,您实际上(就Crypto++而言)试图验证SHA-1(SHA-256(msg)),因此它自然会失败。而是传递整个实际消息,跳过额外的SHA-256计算。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4946716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档