Я делаю это назначение, и я столкнулся с этой проблемой, когда, если я ввожу предложение, например: «Привет, меня зовут Адам», оно будет зашифровывать только «Привет» .. Но когда я назначаю предложение в виде открытого текстаЯ получаю полное зашифрованное / расшифрованное предложение.
AutoSeededRandomPool rnd;
// Generate a random key
SecByteBlock key(0x00, AES::DEFAULT_KEYLENGTH);
rnd.GenerateBlock( key, key.size() );
// Generate a random IV
SecByteBlock iv(AES::BLOCKSIZE);
rnd.GenerateBlock(iv, iv.size());
// Read phrase
std::string plaintext;
cin >> plaintext;
std::string ciphertext;
std::string decryptedtext;
// encrypt
CTR_Mode<AES>::Encryption cfbEncryption(key, key.size(), iv);
CryptoPP::StreamTransformationFilter stfEncryptor(cfbEncryption, new CryptoPP::StringSink( ciphertext ) );
stfEncryptor.Put( reinterpret_cast<const unsigned char*>( plaintext.c_str() ), plaintext.length() + 1 );
stfEncryptor.MessageEnd();
cout << ciphertext << endl;
// decrypt
CTR_Mode<AES>::Decryption cfbDecryption(key, key.size(), iv);
CryptoPP::StreamTransformationFilter stfDecryptor(cfbDecryption, new CryptoPP::StringSink( decryptedtext ) );
stfDecryptor.Put( reinterpret_cast<const unsigned char*>( ciphertext.c_str() ), ciphertext.size() );
stfDecryptor.MessageEnd();
cout << decryptedtext << endl;
Может кто-нибудь объяснить ..?Я не совсем понимаю, как это работает ... Мне нужно пользовательский ввод для этого назначения.Есть ли способ, где я могу получить пользовательский ввод и получить полное зашифрованное предложение?