У кого есть программа, которая шифрует и дешифрует текст с помошью алгоритма Цезаря, на языке с++. Заранее спасибо.
Ваще нече в голову не приходит....как аллгоритм организовать. Возможно у кого-то завалялась написанная программа. Поделитесь пожалуйста.
wilds Если мне не изменяет память, работа алгоритма заключается в следующем: Код (Text): void encode(char *buff, int len, int shift) { for (int i=0; i<len; i++) buff[i] += shift; } void decode(char *buff, int len, int shift) { for (int i=0; i<len; i++) buff[i] -= shift; } Не совсем корректно конечно (нужно нормировать по интервалу алфавита), но работать будет. Что сложного?
Я так понял, len это длина кодируемой строки....как ее можно задать автоматически? Т.к текст очень большой для кодирования.
wilds Как хорошо, что компиляторы умеют оптимизировать такие вещи Код (Text): for(int t=0;t<size;t++) buf[t] = NULL; В твоем примере длина строки равна m-1.
Кто может помочь, вобщем почти все как в цезаре, есть форуме F=a*p+b; Где а- это число на которое умножаем текст, р - сам текст, b-число на которое здвигаем. Мне немного не понятно,допустим у нас есть символ русская буква а, если ее умножить на 2, то что выйдет?
Код русской буквы а=0xE0. Соотв. если 0xE0 умножить на 2 получим 0xC0. Но 0xC0/2 != 0xE0, так что обратно не выйдет раскодировать, если размер под букву равен 1 байту.
wilds Но, скажем, если алфавит состоит только из русских букв, то вполне можно установить соответствие. Если умножение не больше чем на 4.
аффтар, Возми первую и последнюю букву алфавита и попробуй кодировать обе методом цезаря... ))) Медетируй...
тю блин. есле не получаецо считать комп методами (мало ли там какие непреодолимые задачи возникаюд) ), то делоете просто два олфавита, первый - оригинальный, второй - расчитанный вручную. типа того(не проверял) Код (Text): char* alph1="abcde....xyz"; char* alph2="cdefg....zab"; void encode(char*str1,char*str2,len) {for(DWORD i=0; i <len;i++)str2[i]=alph2[(DWORD)StrChr(&alph1,str1[i])-(DWORD)&alph1];} в расшифровщеке поменять алфавиты местами. думаю принцип понятен.