В выводе расшифрованной строки присутствуют некорректные символы

170
21 апреля 2022, 18:00

сегодня я решил попробовать написать шифрование строк и у меня даже получилось. Однако в выводе расшифрованной строки присутствуют лишние символы. Первый символ выходной строки будет заменен на букву "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�

Answer 1

Я забыл выделить память для массива m_aCharArray. Решение: char m_aCharArray[ размер ]

READ ALSO
Как можно переписать алгоритм сортировки слиянием, чтоб он поддерживал сортировку от большего к меньшему исходя из переданного из вне компоратора

Как можно переписать алгоритм сортировки слиянием, чтоб он поддерживал сортировку от большего к меньшему исходя из переданного из вне компоратора

Я написал алгоритм сортировки слиянием, когда я передаю стандартный компоратор от меньшего к большему, все работает нормально, но если я пытаюсь...

234
Шаблон списка c++

Шаблон списка c++

есть двусвязный список, необходимо сделать для него шаблон, чтобы можно было взаимодействовать с разными типами данных, подскажите как правильно...

78
Удаление элементов в файле

Удаление элементов в файле

Есть код, в котором генерируются последовательности и помещаются в inputtxt

178
Стоит ли когда либо использовать #include &lt;bits / stdc ++.h&gt;?

Стоит ли когда либо использовать #include <bits / stdc ++.h>?

я вот только не давно узнал про заголовочный файл #include <bits / stdc ++H> и зачал искать информацию по этой библиотеке

107