Hi knuth,

> I'm having some "problems" for quite some time now with Crypto++.
> There are two issues i want to raise
Have you examined any sample code from either the source files, the
Crypto++ FAQ, the Crypto++ wiki, or programming sites such as
CoedProject?

> ifstream ifs(...);
In the Microsoft world, I usually observe problems with the wide stream stuff.

> ifs.read(buf,fileLength);
I suspect the issue is on the Write side of the equation.

> The problem is that because the file contains weird characters after the
> encryption , it actually reads until it finds end of file (or 00 i think -
> in hex)
Nothing weird about them. They will be in the range from 0 - 255,
inclusive. End of File is usually defined similar to (unsigned
short)-1 or (unsigned int)-1 so that you can determine when a byte has
been read versus the end of file marker.

Perhaps you should try a StringSink for the Write.

Jeff

On 1/25/09, knuth <[email protected]> wrote:
>
>
> Hi there.
> I'm having some "problems" for quite some time now with Crypto++.
> There are two issues i want to raise:
>
> 1.I encrypt with AES a plain text , i dump the ciphertext in a file and then
> i try to read the file intro a string.
> I used to read the file like that:
>
> //this would give me the correct file size
> long fileLength = FileMessageSize(finName);
>
> ifstream ifs(finName.c_str(),ios_base::binary);
> ifs.read(buf,fileLength);
> ifs.close();
>
> The problem is that because the file contains weird characters after the
> encryption , it actually reads until it finds end of file (or 00 i think -
> in hex) (->i debuged my program and seen it stops when encountering 00)
> Behaves the same if using fread().
> Thus i changed to C style reading which works fine:
> unsigned i = 0;
> while(!feof(f))
> {
>        fscanf(f, "%c", &str[i]);
>        i++;
> }
>
> (Said all the above for others that might encounter the same problem and as
> a preamble for the next part)
>
> 2.I wanted to hex encode the text after i encrypted it so i could keep it in
> a "nicer" format.
> So i encrypt the plain text , and then i encode with this:
>
> string HexEncode(string in)
> {
>        string result;
>
>        StringSource(in.c_str(), true, new HexEncoder(new StringSink(result)));
>
>        return result;
> }
>
> The problem is that the encrypted text has 17000 bytes (a test string i'm
> using), but the encoding of the encrypted string has only 200 , something
> like that . And my guess is that HexEncoder(new StringSink(result)) works
> with buffering functions and it behaves similar to what I described at point
> 1, only that here it probably finds '\0' when reading those weird characters
> and he thinks the string terminates there and stops.
>
> I just wanted to point out these issues , maybe you'll find them important
> (the second one) - if not , at least people that encounter the same problem
> will know why it happens.
>
> Cheers
>
> --
> View this message in context: 
> http://www.nabble.com/Encryption-and-Encoding-conflict--tp21652293p21652293.html
> Sent from the Crypto++ Users mailing list archive at Nabble.com.
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
-~----------~----~----~----~------~----~------~--~---

Reply via email to