сегодня я решил попробовать написать шифрование строк и у меня даже получилось. Однако в выводе расшифрованной строки присутствуют лишние символы. Первый символ выходной строки будет заменен на букву "o", а к концу строки будет добавлен юникод. Сам код:
#include <iostream>
#include <cstring>
class C_CryptString
{
protected:
void Encrypt( std::string m_aString )
{
for ( int m_iCharPtr = 0; m_iCharPtr < ( int )( m_strSize ^ m_XorKey1 ); ++m_iCharPtr )
{
char m_cTemp = m_aString[ m_iCharPtr ];
m_cTemp ^= m_XorKey1;
m_cTemp ^= m_XorKey2;
this->m_aCharArray[ m_iCharPtr ] = m_cTemp;
}
}
void Decrypt( std::string& m_aOutput)
{
for ( int m_iCharPosition = 0; m_iCharPosition < ( int )( m_strSize ^ m_XorKey1 ); m_iCharPosition++ )
{
char m_cTemp = m_aCharArray[ m_iCharPosition ];
m_cTemp ^= m_XorKey2;
m_cTemp ^= m_XorKey1;
m_aOutput.data( )[ m_iCharPosition ] = m_cTemp;
}
}
public:
C_CryptString( std::string m_StringToCrypt )
{
this->m_XorKey1 = rand( ) ^ sizeof( m_StringToCrypt.data( ));
this->m_XorKey2 = rand( ) ^ m_StringToCrypt.length( );
this->m_strSize = m_StringToCrypt.length( ) ^ this->m_XorKey1;
Encrypt( m_StringToCrypt );
}
void GetDecryptedArray( std::string& m_aOutput )
{
Decrypt( m_aOutput );
}
char* GetEncryptedArray( )
{
return this->m_aCharArray;
}
private:
char* m_aCharArray;
int m_strSize;
uint32_t m_XorKey1, m_XorKey2;
};
int main( )
{
std::string m_EncryptedData = "";
std::cout << "Enter string: ";
std::cin >> m_EncryptedData;
auto m_String = C_CryptString( m_EncryptedData );
std::string m_aString = "";
m_String.GetDecryptedArray( m_aString );
std::cout << m_aString.data( );
}
Вывод программы при вводе 123: o23�
Я забыл выделить память для массива m_aCharArray. Решение: char m_aCharArray[ размер ]
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я написал алгоритм сортировки слиянием, когда я передаю стандартный компоратор от меньшего к большему, все работает нормально, но если я пытаюсь...
есть двусвязный список, необходимо сделать для него шаблон, чтобы можно было взаимодействовать с разными типами данных, подскажите как правильно...
Есть код, в котором генерируются последовательности и помещаются в inputtxt
я вот только не давно узнал про заголовочный файл #include <bits / stdc ++H> и зачал искать информацию по этой библиотеке