Hi Vincent, Shooting from the hip:
void Crypt::TwofishDecrypt(char* Sequence)
{
cbcDecryptor->Put((byte *)Sequence, (unsigned int)strlen(Sequence));
memcpy(Sequence, strDecrypted.c_str(), strDecrypted.size());
strDecrypted.erase();
}
strlen(Sequence) is probably the culprit. I'm assuming char* Sequence is
the ciphertext.
Jeff
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of vincent miethe
Sent: Friday, April 02, 2004 2:34 PM
To: [EMAIL PROTECTED]
Subject: Twofish
hi,
i think its a newbie question - i am a newbie.
i want to encrypt and decrypt strings for a lan-connection. so i
tried to split setkey, encrypt and decrypt. the key will be the same for
the
whole seesion. it works fine after starting but after 3-15 rounds the
strings will be shorter and wrong. i�m nor sure about Padding
and MessageEnd().
anyone who can help.
thanks a lot.
testmain:
...
char cPlainText[] = "what ever i want to DeOrEncrypt";
Crypt scs;
scs.TwofishSetKey(key, sizeof(key), iv);
for(int i = 0; i< 10000; i++) { // test
scs.TwofishEncrypt(cPlaintext);
scs.TwofishDecrypt(cPlaintext);
}
...
class Crypt:
...
SymmetricCipher *cbcEncryption, *cbcDecryption;
StreamTransformationFilter *cbcEncryptor, *cbcDecryptor;
std::string
strEncrypted, strDecrypted;
...
void Crypt::TwofishSetKey(unsigned
char *key, int keySize, unsigned char *iv)
{
cbcEncryption = new CFB_Mode<Twofish>::Encryption(key, keySize,
iv);
cbcEncryptor = new
StreamTransformationFilter(*((SymmetricCipher*)cbcEncryption),
new StringSink(strEncrypted),
StreamTransformationFilter::NO_PADDING);
cbcDecryption = new CFB_Mode<Twofish>::Decryption(key, keySize,
iv);
cbcDecryptor = new
StreamTransformationFilter(*((SymmetricCipher*)cbcDecryption),
new StringSink(strDecrypted),
StreamTransformationFilter::NO_PADDING);
}
void Crypt::TwofishEncrypt(char* Sequence)
{
cbcEncryptor->Put((byte *)Sequence, (unsigned int)strlen(Sequence));
memcpy(Sequence, strEncrypted.c_str(), strEncrypted.size());
strEncrypted.erase();
}
void Crypt::TwofishDecrypt(char* Sequence)
{
cbcDecryptor->Put((byte *)Sequence, (unsigned int)strlen(Sequence));
memcpy(Sequence, strDecrypted.c_str(), strDecrypted.size());
strDecrypted.erase();
}
...
smime.p7s
Description: S/MIME cryptographic signature
