Добрый день. Я реализовывал шифрование в лабораторной работе на языке c# методом гаммирования, в моей реализации значения складываются по модулю 2. Столкнулся с проблемой, что возникают ошибки и неправильно происходит дешифровка, это происходит из-за того, что после сложения могут получиться числа большие, чем длина алфавита. Брать mod по длине алфавита не помогает. Кто-то сталкивался с такой проблемой или есть идеи как это решить?
UPD код шифрования text - текст сообщения, lol[] - генерирую массив случайных значений.
public override string Crypt(bool c)
{
int[] alphaindex = new int[alphabet.Length];
for(int i = 0;i< alphabet.Length;i++)//расставляем индексы для букв в алфавите
{
alphaindex[i] = i;
}
string newtext = "";//выходящий текст
int ikey = 1;//Значение для перевода словесного ключа в число
for(int i = 0;i<key.Length;i++)
{
ikey += alphaindex[indexof(alphabet, key[i])];
}
int[] lol = new int[text.Length];//массив случайных значений по длине текста
for (int i = 0; i < text.Length; i++)
lol[i] = random.Next(ikey);
for (int i = 0;i<text.Length;i++)
{
newtext += alphabet[(alphaindex[indexof(alphabet, text[i])] ^ lol[i])%alphabet.Length];
}
return newtext;
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Возникла проблема с функцией "Random"Иногда не выводит результат
Как програмно прокрутить ScroolBar в ListBox в конец списка
Написал тест, который открывает страницу и ждет пока данные будут загружены, время засекаю сразу после нажатия на кнопку, до того момента,...