Xor шифрование - C (СИ)
Формулировка задачи:
Подскажите правильно ли у меня реализованна функция шифрования
а то бывает обрывается крипт или добавляется, что то лишнее, потом не могу раскодировать полность пол строки раскодирует половину нет.
#define SIZE_OF_KEY 10
char Key[10]={'a','w','a','c','u','a','w','a','c','u'};
char crypt(char data){
static char i;
char result=data^Key[i++];
if(i>=SIZE_OF_KEY)i=0;
return result;
}Решение задачи: «Xor шифрование»
textual
Листинг программы
AnsiString XOR_Crypt(AnsiStrig in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
{
out += (char)(in[x] ^ pass[x%pass.Length()+1]);
}
return out;
}
Объяснение кода листинга программы
- Функция
XOR_Cryptпринимает два аргумента типаAnsiString:inиpass. - Переменная
outинициализируется пустой строкой и будет содержать зашифрованный результат. - Используется цикл
forдля прохода по каждому символу входной строкиin. - Внутри цикла каждый символ
inXOR'ится с соответствующим символом из строкиpass. - Результат XOR операции добавляется в конец строки
out. - После завершения цикла возвращается зашифрованная строка
out.