请问如何使用crypto++实现privatekey加密,public key解密的?

问题描述

请问如何使用crypto++实现privatekey加密,publickey解密的?看到一些例子,都是用公钥加密,私钥解密的,不知道有没有privatekey加密,publickey解密的用法??公钥加密,私钥解密的例子://#defineECC_ALGORITHMCryptoPP::ECP//#defineECC_ALGORITHMCryptoPP::EC2N//////StandardECCCurves//UsewhenECC_ALGORITHMisCryptoPP::ECP////#defineECC_CURVECryptoPP::ASN1::secp112r1()//#defineECC_CURVECryptoPP::ASN1::secp112r2()//#defineECC_CURVECryptoPP::ASN1::secp128r1()//#defineECC_CURVECryptoPP::ASN1::secp128r2()#defineECC_CURVECryptoPP::ASN1::secp160r1()//#defineECC_CURVECryptoPP::ASN1::secp160k1()//#defineECC_CURVECryptoPP::ASN1::secp160r2()//#defineECC_CURVECryptoPP::ASN1::secp192k1()//#defineECC_CURVECryptoPP::ASN1::secp224k1()//#defineECC_CURVECryptoPP::ASN1::secp224r1()//#defineECC_CURVECryptoPP::ASN1::secp256k1()//#defineECC_CURVECryptoPP::ASN1::secp384r1()//#defineECC_CURVECryptoPP::ASN1::secp521r1()////ECCCurvesoverGF(2)//UsewhenECC_ALGORITHMisCryptoPP::EC2N////#defineECC_CURVECryptoPP::ASN1::sect113r1()//#defineECC_CURVECryptoPP::ASN1::sect113r2()//#defineECC_CURVECryptoPP::ASN1::sect131r1()//#defineECC_CURVECryptoPP::ASN1::sect131r2()//#defineECC_CURVECryptoPP::ASN1::sect163k1()//#defineECC_CURVECryptoPP::ASN1::sect163r1()//#defineECC_CURVECryptoPP::ASN1::sect163r2()//#defineECC_CURVECryptoPP::ASN1::sect193r1()//#defineECC_CURVECryptoPP::ASN1::sect193r2()//#defineECC_CURVECryptoPP::ASN1::sect233k1()//#defineECC_CURVECryptoPP::ASN1::sect233r1()//#defineECC_CURVECryptoPP::ASN1::sect239k1()//#defineECC_CURVECryptoPP::ASN1::sect283k1()//#defineECC_CURVECryptoPP::ASN1::sect283r1()//#defineECC_CURVECryptoPP::ASN1::sect409k1()//#defineECC_CURVECryptoPP::ASN1::sect409r1()//#defineECC_CURVECryptoPP::ASN1::sect571k1()//#defineECC_CURVECryptoPP::ASN1::sect571r1()intmain(intargc,char*argv[]){try{CryptoPP::ECIES<ECC_ALGORITHM>::PrivateKeyPrivateKey;CryptoPP::ECIES<ECC_ALGORITHM>::PublicKeyPublicKey;CryptoPP::AutoSeededRandomPoolrng;//CurveKeyGenerationPrivateKey.Initialize(rng,ECC_CURVE);PrivateKey.MakePublicKey(PublicKey);//KeyValidationif(false==PrivateKey.Validate(rng,6)){throwstd::string("PrivateKeyValidation");}if(false==PublicKey.Validate(rng,6)){throwstd::string("PublicKeyValidation");}//EncryptorandDecryptorCryptoPP::ECIES<ECC_ALGORITHM>::EncryptorEncryptor(PublicKey);CryptoPP::ECIES<ECC_ALGORITHM>::DecryptorDecryptor(PrivateKey);//Message//std::stringPlainText="ECC";//std::stringPlainText="ECCTest";std::stringPlainText="Yodasaid,"Doordonot.Thereisnotry."";//std::stringPlainText="WinniethePoohsaid,"Iamabearofverylittlebrain,andlongwordsbotherme."";//RuntimeSizes...unsignedintPlainTextLength=PlainText.length()+1;unsignedintCipherTextLength=Encryptor.CiphertextLength(PlainText.length()+1);if(0==CipherTextLength){throwstd::string("plaintextLengthisnotvalid(toolong)");}//Diagnosticsstd::cout<<"Plaintext:"<<std::endl<<"'"<<PlainText<<"'"<<std::endl;std::cout<<"Theplaintextlengthis"<<PlainTextLength<<"(includingthetrailing'\0')"<<std::endl;////Takeabreak...//std::cout<<std::endl;std::cout<<"Theciphertextlengthforthismessageis"<<CipherTextLength<<std::endl;//ScratchforEncryptionbyte*CipherText=newbyte[CipherTextLength];if(NULL==CipherText){throwstd::string("CipherTextAllocationFailure");}::memset(CipherText,0xFB,Encryptor.CiphertextLength(PlainTextLength));//EncryptionEncryptor.Encrypt(rng,reinterpret_cast<constbyte*>(PlainText.c_str()),PlainTextLength,CipherText);////Takeabreak...//std::cout<<std::endl;//ScratchforDecryptionunsignedintRecoveredTextLength=Decryptor.MaxPlaintextLength(CipherTextLength);if(0==RecoveredTextLength){throwstd::string("ciphertextLengthisnotvalid(toolongortooshort)");}//DecryptionBufferchar*RecoveredText=newchar[RecoveredTextLength];if(NULL==RecoveredText){throwstd::string("RecoveredTextCipherTextAllocationFailure");}::memset(RecoveredText,0xFB,PlainTextLength);//DecryptionDecryptor.Decrypt(rng,CipherText,CipherTextLength,reinterpret_cast<byte*>(RecoveredText));//Diagnosticsstd::cout<<"Therecoveredtextlengthforthiscipheris"<<RecoveredTextLength<<std::endl;std::cout<<"Recoveredtext:"<<std::endl<<"'"<<RecoveredText<<"'"<<std::endl;//Cleanupif(NULL!=CipherText){delete[]CipherText;}if(NULL!=RecoveredText){delete[]RecoveredText;}}catch(CryptoPP::Exception&e){std::cerr<<"Crypto++Error:"<<e.what()<<std::endl;return-3;}catch(std::string&s){std::cerr<<"Error:"<<s<<std::endl;return-2;}catch(...){std::cerr<<"UnknownError"<<std::endl;return-1;}return0;}

解决方案

解决方案二:
这样行吗,不确定,你试一下。CryptoPP::ECIES<ECC_ALGORITHM>::EncryptorEncryptor(PrivateKey);CryptoPP::ECIES<ECC_ALGORITHM>::DecryptorDecryptor(PublicKey);

另外,私钥加密,公钥解密也没什么实用意义呀?你的需求是什么?直接用签名/验签不行吗?

时间: 2024-11-09 03:22:36

请问如何使用crypto++实现privatekey加密,public key解密的?的相关文章

base64-这个BASE64Encoder的加密方法的解密方法怎么写?

问题描述 这个BASE64Encoder的加密方法的解密方法怎么写? public class BASE64Encoder { private static char[] codec_table = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd'

eb ervice-C# WebService在接收到带参数的接口调用时自动将加密的参数解密

问题描述 C# WebService在接收到带参数的接口调用时自动将加密的参数解密 我的WebService的所有接口调用的参数都是加密过的,而且有接口函数.我在想有没有什么办法,在WebService接收到接口调用请求时,自动将参数解密,而不需要我每个函数内写解密?????? 我暂时没有C币了,有一定奉上 解决方案 我在Spring里面是使用filter过滤器机制来做的!所有的请求都先通过filter,在filter里面做统一的处理,然后再分发到各个具体的controller去.我觉得这种思路

spring security加密后如何解密

问题描述 spring security加密后如何解密 我想编辑加密后的用户信,密码加密后字段太长了,我想解密该怎么做. 解决方案 没有知道的吗?????????

linux下apt-get出现“no public key available…”解决方法

众所周知,Linux虽然比Windows的安全系数要高,但是经常更新还是个好习惯(至少近期就爆出了不少关于SSL的安全漏洞值得大家重视!),但是在Ubuntu和Debian下运行apt-get update刷新更新源的时候却经常遇到"There is no public key available for the following key IDs"的问题,具体表现为以下错误提示: W:There is no public key available for the following

用MD5加密后 能 解密吗 ?

问题描述 用MD5加密后能解密吗?还有有________这样形式的输入控件吗在ASP.NET中? 解决方案 解决方案二:1.md5理论上不可逆,但是网上也有很多可破解的网站.2.可以使用css来调整样式.解决方案三:不能.有些网站,让你输入原文和散列值,然后存在数据库里.等你再进行所谓的"解密"时,它搜索一下数据库.这叫解密?这叫蒙人.比如说你随便找一份销售合同来,得到它的md5值,你能说有哪一个公司的哪一份销售合同跟别的合同是一模一样的?可是这种网站骗某些人的原因,是因为这些人基本上

Debian更新源出错以及&quot;There is no public key available&quot;解决方法

一般我们再购买和开通Linux VPS主机之后,登入SSH首先需要做的肯定是更新当前服务器的源安装包,这样可以确保服务器的最新安全补丁最新,而且在编译安装软件的时候可以确保软件的最新版本.今天老蒋在Debian6系统中update更新源的时候出现错误无法更新. 第一.Debian更新源错误提示  代码如下 复制代码 W: Failed to fetch http://http.debian.net/debian/dists/squeeze/main/binary-i386/Packages.gz

SQLPROMPT5.3对各种加密对象的解密测试

原文:SQLPROMPT5.3对各种加密对象的解密测试 SQLPROMPT5.3对各种加密对象的解密测试 测试环境: SQL2005个人开发者版 SP4 SQLPROMPT版本:5.3.8.2 视图 1 CREATE VIEW aa 2 WITH ENCRYPTION 3 AS 4 SELECT * FROM [dbo].[Users] 可以解密 存储过程 1 CREATE PROCEDURE bb 2 WITH ENCRYPTION 3 AS 4 SELECT * FROM [dbo].[Us

请问如何用java编写wordPress加密方式?

问题描述 本小菜完全不懂php,现在想通过java去访问已经存在的mysql数据库,里面存有一些php开源框架wordpress的用户数据,现在想用java实现登录功能,请问如何用java去编写密码的加密方式,请各位大神支招,最好是能给我一段现成的代码,以下为wordpress密码的加密方式http://www.tuicool.com/articles/ENrqIz. 解决方案 解决方案二:自己先顶一个...大神们快来呀.解决方案三:同问,如何用java去编写wodpress密码的加密方式?请大

用AES加解密,加密可以,解密却有错(错误描述如文章最后所示),不知如何解决?

问题描述 importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.security.InvalidKeyException;importjava.security.Key;importjava.security.NoSuchAlgorithmException;importjava.util.Iterator;importjava.util.Properties;i