В общем стояла такая задача:
Реализовать конгруэнтный датчик псевдослучайных чисел для m=256, константы A=5, C=3, T(0)=1. И затем реализовать шифрование методом гаммирования слова из 10 символов. В нашем случае это слово "бездельник". То есть нужно будет T наложить на NUM (номер буквы в алфавите).
Вообщем генератор я реализовал, перепроверил - все сошлось. Получилось 10 значений от T(1) до T(9) соответственно, T(0) нам уже известно (1 8 43 218 69 92 207 14 73 112). Так вот, теперь нам нужно кажде значение наложить на номер буквы нашего исходного слова и получить ее в зашифрованном виде. Вот например, первая буква в нашем исходном слове "бездельник" - "б". В массиве она идет 2 по счету, если считать с нуля. M[34]={' ','а',
'б',....}. То есть нам нужно T(0)=1 наложить на номер буквы "б" в алфавите. То есть 1 на 2. Делаем это через двоичную систему. 2 в двоичной системе будет равно 0010, а 1 будет 0001. В результате наложения получается 0011, что в десятеричной системе равно 3. То есть в зашифрованном виде это будет 3 буква в массиве - "в". Собственно на первую букву программа правильно накладывает шифр. На вторую букву слова "е" - тоже правильно. 8 накладываем на 6 получаем 1110 в двоичной или 14 в десятеричной, соответственно 14 буква в массиве это "м". Третью букву вроде тоже правильно определяет, а потом какая то ерунда пошла. Во-первых, шифрует всего 8 букв, а не 10. В третьих неправильно. По моим расчетам должно получиться либо "вмярюкгаюу", либо "вм сялдяф". Но заметил такую странность - вроде неправильно он определяет те буквы, у которых после наложения в десятеричной системе получается значение больше 34, т.е. больше чем символов в массиве. Допустим буква "д" = 223, следующая буква "е" = 67. И я делал с учетом того, что пройдя 34 символа, он продолжит сначала проходить массив, пока не дойдет до своего значения, в нашем случае 223. Возможно, я не прав. Вообщем вот прилагаю скрин, как все выходит:
и код программы во вложении
Ребят, помогите пожалуйста! Хоть чем нибудь. Если потребуется, могу залить исходники.
п.с. на зачеркнутый код внизу не обращайте внимание, я не знаю че он вдруг зачеркнулся))