The thing is operator<< is used for formatted text output, not binary.
https://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt
https://en.cppreference.com/w/cpp/named_req/FormattedOutputFunction

There are read/write functions to deal with binary files.
https://en.cppreference.com/w/cpp/io/basic_ostream/write

Since you get binary data after encryption, you must open file in binary 
mode and use write() to put binary data to file.

FileSink with binary=true does exactly what you need.

If you still want to play with text, look at HexEncoder & HexDecoder filters
https://cryptopp.com/wiki/HexDecoder

среда, 30 ноября 2022 г. в 03:19:24 UTC+7, boomer1...@gmail.com: 

> Ok nevermind i figured it out. For anyone in the future having the same 
> problem, here is a stackoverflow post solving my situation: 
> https://stackoverflow.com/questions/30633594/c-convert-hexadecimal-string-with-to-original-binary-string
>  
> .Thanks a lot for the answers, the format thing you said helped a lot.
>
> On Tuesday, November 29, 2022 at 8:35:16 PM UTC+2 Nikos Karavidas wrote:
>
>> Ok so i got this figured out with this:
>>
>> stringstream ss;
>>
>>     for (int i = 0; i < ciphertext.size(); ++i)
>>     {
>>         ss << hex << (0xFF & static_cast<byte>(ciphertext[i])) << " ";
>>     }
>>
>>     string mystr = ss.str();
>>
>>     cout << "mystr: " << mystr << endl;
>>
>>
>> and it works fine, all characters are printed in hex and i can write them 
>> in a txt file, no problem. BUT when i read them from the txt file, i dont 
>> know how to convert them back from hex, so i can do the decryption.
>> On Tuesday, November 29, 2022 at 8:23:19 PM UTC+2 Nikos Karavidas wrote:
>>
>>> I 've got the following function:
>>> void encrypt(string ivInString, string keyInString, const string 
>>> &filename_in, const string &filename_out)
>>> {
>>>     SecByteBlock iv(reinterpret_cast<const byte*>(&ivInString[0]), 
>>> ivInString.size());
>>>     SecByteBlock key(reinterpret_cast<const byte*>(&keyInString[0]), 
>>> keyInString.size());
>>>
>>>
>>>     CFB_Mode<AES>::Encryption e;
>>>     e.SetKeyWithIV(key.data(), key.size(), iv.data());
>>>
>>>     ifstream in{ filename_in, ios::binary };
>>>     ofstream out{ filename_out, ios::binary };
>>>
>>>     FileSource f{ in, /*pumpAll=*/true, new StreamTransformationFilter{ 
>>> e, new FileSink{out} } };
>>> }
>>>
>>> and a similar for decrypting, and they work fine, but this is to encrypt 
>>> any sort of file, which is my only way of encrypting the txt, but its not 
>>> what i need. What i need is to encrypt a string. The 1st answer in this 
>>> link: 
>>> https://stackoverflow.com/questions/12306956/example-of-aes-using-crypto 
>>> , prints all the ciphered text in hex in the line that says "cout << "0x" 
>>> << hex << (0xFF & static_cast<byte>(ciphertext[i])) << " ";". But im not 
>>> sure how that hex part even works. Do you know how i can write that into a 
>>> txt file?
>>>
>>>
>>>
>>> On Tuesday, November 29, 2022 at 7:43:08 PM UTC+2 schmid...@gmail.com 
>>> wrote:
>>>
>>>> Could you try to write a minimal working example in a separate project 
>>>> and share the code if you still have any issues? Try to write that 
>>>> encryption/decryption routines yourself line by line instead of copy&paste 
>>>> any examples.
>>>>
>>>> The idea is simple: you read data source, you put data through the 
>>>> filter (which does the encryption or decryption) and put the result to the 
>>>> sink. So you should setup a source: read file in buffer and use 
>>>> StringSource or VectorSource or use FileSource. Then you should prepare an 
>>>> encryption filter (StreamTransformationFilter) with appropriate options 
>>>> (you could learn it from example code). Then you put the data into the 
>>>> Sink.
>>>> https://www.cryptopp.com/wiki/FileSource
>>>>
>>>> Remember to use same key & iv for decryption. Also binary/text mode is 
>>>> important when reading files. Also remember to use same mode (CBC, ECB, 
>>>> etc.) for both encryption/decryption algorithm. Use authenticated 
>>>> encryption to catch message checksum errors.
>>>>
>>>> Try to experiment with pipelining, e.g. calculating messag digest and 
>>>> printing it in hex. When you get the strong feeling what works and what 
>>>> isn't you could easily use any encryption/decryption algorithm in 
>>>> Cryptopp. 
>>>> Just take some time to read wiki and experiment with library primitives. 
>>>> And good luck with that!
>>>> https://www.cryptopp.com/wiki/Pipelining
>>>>
>>>> вторник, 29 ноября 2022 г. в 23:01:33 UTC+7, boomer1...@gmail.com: 
>>>>
>>>>> Not sure what you mean by format, i just use something like 
>>>>> "myFileStream << cipher", and then read it back again. Do you mean that 
>>>>> the 
>>>>> txt file should be utf-8 or something like that? What would be the right 
>>>>> way to write the ciphered string to the txt file and read it afterwards? 
>>>>> Thanks a lot for answering btw.
>>>>>
>>>>> On Tuesday, November 29, 2022 at 4:15:37 PM UTC+2 creyesc...@gmail.com 
>>>>> wrote:
>>>>>
>>>>>> I think I have an idea of ​​what is happening to you, what happens 
>>>>>> that you must decrypt in the same format that you encrypted, since that 
>>>>>> happened to me at some point, you must also see the format in how you 
>>>>>> return the txt file, or the text of txt if it is the same format that is 
>>>>>> needed to decrypt it. Greetings.
>>>>>>
>>>>>> El lunes, 28 de noviembre de 2022 a las 14:30:04 UTC-5, 
>>>>>> boomer1...@gmail.com escribió:
>>>>>>
>>>>>>> Ok so based on the example from this link   (
>>>>>>> https://www.cryptopp.com/wiki/Advanced_Encryption_Standard),    i 
>>>>>>> have tried encrypting a "plain" string into a "cipher" string and 
>>>>>>> writing 
>>>>>>> that "cipher" string to a .txt file in one program, and in another 
>>>>>>> program 
>>>>>>> afterwards reading that same .txt file into a string and decrypting it. 
>>>>>>> But 
>>>>>>> when i cout that "recovered" string, it is just  random characters and 
>>>>>>> not 
>>>>>>> my original "plain" string. I think the problem starts when i attempt 
>>>>>>> to 
>>>>>>> get the "cipher" string in the .txt file, but not sure. Any help is 
>>>>>>> greatly 
>>>>>>> appreciated. Thanks in advance.
>>>>>>
>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cryptopp-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/cryptopp-users/bc7d3978-b557-4baf-abfa-95b6e0d14373n%40googlegroups.com.

Reply via email to