проблема):
bool RC4::encrypt_decrypt(std::vector<uint8_t>& msg)
{
if (msg.empty())
return false;
std::copy(m_S.begin(), m_S.end(), std::back_inserter(m_cpy_S)); // и вот сюда отладчик возвращается несколько раз.
unsigned int i{}; //после чего эта переменная принимает большое значение и я выхожу за границы вектора.
for (; i < msg.size(); ++i)
{
++m_Q1;
m_Q2 += m_cpy_S[m_Q1];
m_cpy_S[m_Q1] ^= m_cpy_S[m_Q2];
m_cpy_S[m_Q2] ^= m_cpy_S[m_Q1];
m_cpy_S[m_Q1] ^= m_cpy_S[m_Q2];
msg[i] ^= m_cpy_S[((m_cpy_S[m_Q1] + m_cpy_S[m_Q2]) % 256)];
}
m_Q1 = 0, m_Q2 = 0, m_cpy_S.clear();
return true;
}
Почему отладчик проходит двара раза по copy? И почему i принимает огромное значение?
релиз или дебаг?
в релизе отладчик может показывать чушь из-за оптимизаций, проверяй в дебаге
Обсуждают сегодня