RSA with Crypto++ v3.1

6 views
Skip to first unread message

Chris Losinger

unread,
Jan 30, 2003, 5:58:45 PM1/30/03
to crypto...@eskimo.com

can anyone give me a simple example of en/decrypting a chunk of memory
(not a file, please) using RSA, or any other PKE algorithm ?

-c
----
Chris Losinger
losi...@earthlink.net
smal...@smalleranimals.com http://www.smalleranimals.com


Lawrence Teo

unread,
Jan 30, 2003, 9:37:48 PM1/30/03
to crypto...@eskimo.com
Hi all,

Does anyone know the solution to compile Crypto++5.0
in Borland C++??


__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

Colestock, Robert

unread,
Jan 30, 2003, 9:37:53 PM1/30/03
to crypto...@eskimo.com, Pawling, John
Chris:

Here is a simple snippet of demonstration code I wrote for both
Crypto++4.2 and 5.0 (I believe 3.2 uses the same definitions as 4.2).
Only the private key comes from a file (also provided), the data comes
from the memory array, the public key is derived from the private key
(you can save this off to use the key pair in an application). I also
have a simple example of sign/verify using this same key.

Hope this helps.

Bob Colestock

#include "rng.h"
#include "des.h"
#include "modes.h"
#include "integer.h"
#include "dh.h"
//#define CRYPTOPP_5_0
#ifndef CRYPTOPP_5_0
#include "cbc.h"
#include "dsa.h"
#endif //CRYPTOPP_5_0
#include "sha.h"
#include "md5.h"
#include "md2.h"
#include "dh2.h"
#include "rsa.h"
#include "rc2.h"

#include "randpool.h"
using namespace CryptoPP;
#include <iostream>

void RWCTest2();
char *lpszPrivateKey="PrivateKey.bin";
RandomPool rndRandom;
unsigned char BufData[]="THIS IS A TEST!!!!!!";
unsigned char signature[2000];
//
//
void RWCTest2()
{
unsigned char pOutCipher[2000];
unsigned char pchDecryptedData[2000];
unsigned int imodulus=0;

//RWC: THIS LOGIC FAILS using Crypto++ 5.0...
CryptoPP::ByteQueue privateKey;
unsigned char BufRSAPrivateKey[2000];
FILE *fp=fopen("./PrivateKey.bin", "rb");
unsigned int iLength = fread(BufRSAPrivateKey, 1, 2000, fp);
fclose(fp);

privateKey.Put(BufRSAPrivateKey, iLength);
RSAES_PKCS1v15_Decryptor rsaPriv(privateKey);

RSAES_PKCS1v15_Encryptor rsaPub(rsaPriv);
rsaPub.Encrypt(rndRandom, BufData, strlen((char *)BufData),
pOutCipher);

#ifndef CRYPTOPP_5_0
imodulus = rsaPub.CipherTextLength(); /*SM_FREE_DEFAULT_KEYBITS /
8;*/
int outLen = rsaPriv.Decrypt(pOutCipher, pchDecryptedData);
#else // CRYPTOPP_5_0
imodulus =
rsaPub.FixedCiphertextLength();//RWC;CiphertextLength(0);
/*RWC;???BASED on key I hope!!!??? */
DecodingResult drResult = rsaPriv.Decrypt(pOutCipher, imodulus,
pchDecryptedData);
int outLen = drResult.messageLength;
#endif // CRYPTOPP_5_0

if (outLen > 0)
std::cout << "RWCTest2: SUCCESSFUL result = |" <<
pchDecryptedData << "|\n";
else
std::cout << "RWCTest2: UN-SUCCESSFUL result, length = " <<
outLen << "\n";

} // END RWCTest2

PrivateKey.bin
Reply all
Reply to author
Forward
0 new messages