crypto++库RSA私钥加密,公钥解密方法

dir541541 2013-04-27 03:25:42
在做的一个小程序里要用到RSA加密.用了crypto++库里的RSA加密.在使用过程中使用公钥加密,私钥解密正常,反过来就出错了.看了源码里的InvertibleRSAFunction类,看类名好像是可逆转的RSA,但不知道如何实现.有用过crypto++库的兄弟帮指点下.
...全文
582 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dir541541 2013-04-28
  • 打赏
  • 举报
回复
我在crypto++库的示例代码里找到相关的函数了.反过来属于RSA文件签名.私钥签名,公钥验证. 代码如下:

void RSASignFile(const char *privFilename, const char *messageFilename, const char *signatureFilename)
{
	FileSource privFile(privFilename, true, new HexDecoder);
	RSASS<PKCS1v15, SHA>::Signer priv(privFile);
	FileSource f(messageFilename, true, new SignerFilter(GlobalRNG(), priv, new HexEncoder(new FileSink(signatureFilename))));
}

bool RSAVerifyFile(const char *pubFilename, const char *messageFilename, const char *signatureFilename)
{
	FileSource pubFile(pubFilename, true, new HexDecoder);
	RSASS<PKCS1v15, SHA>::Verifier pub(pubFile);

	FileSource signatureFile(signatureFilename, true, new HexDecoder);
	if (signatureFile.MaxRetrievable() != pub.SignatureLength())
		return false;
	SecByteBlock signature(pub.SignatureLength());
	signatureFile.Get(signature, signature.size());

	VerifierFilter *verifierFilter = new VerifierFilter(pub);
	verifierFilter->Put(signature, pub.SignatureLength());
	FileSource f(messageFilename, true, verifierFilter);

	return verifierFilter->GetLastResult();
}
whizer 2013-04-27
  • 打赏
  • 举报
回复
反过来就出错,什么意思?解出来的是乱码? 如果你的公钥加密可以用私钥解密的话,公/私钥对是没有问题的.按道理不会出现私钥加密公钥解密失败的问题. 能把问题详细描述一下?
hlyces 2013-04-27
  • 打赏
  • 举报
回复
可以反过来?不都是只能用公钥加密,私钥解密么。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧