Я работаю на основной строки алгоритма шифрования/дешифрования в C++ (источник здесь: http://pastebin.com/MLnn8D82)Где этот алгоритм шифрования/дешифрования работает неправильно?
Проблема у меня в том, что он не расшифровывает должным образом. Уравнение шифрования:
strInput[nPos]=(((strInput[nPos])+(nPos+1))*2);
И уравнение дешифрования:
strPassword[nPos]=(((strPassword[nPos])-(nPos+1))/2);
Когда я пытаюсь его с операторами только сложение/вычитание, она прекрасно работает. Но когда я умножаю шифрование и делюсь на дешифрование, я получаю кажущуюся случайную строку.
Сначала я подумал, что это может быть из-за того, что пароль записывается в файл и извлекается из файла перед дешифровкой, но я попытался вывести его непосредственно из основной функции, и я получил те же результаты.
Есть ли проблема с разделительными/размножающимися строками? Ранее он работал с строками C-style (char array), но я предполагаю, что это может быть другим.
Любая помощь приветствуется!
Редактировать: Спасибо за ответы до сих пор. Я знаю, что это не безопасно и что я не должен его использовать; Я делаю это только для практики.
Кроме того, это не проблема с памятью. Я попытался делить на этапе шифрования, а не на умножение, но я все равно получаю случайную строку, а не исходную строку.
Что произойдет, если этот результат вычисления приведет к значению, которое больше, чем может содержать символ? – Joe
Вы уже ошиблись, создав свой собственный алгоритм вместо стандартного алгоритма. – CodesInChaos