Еще один пример ненадежного шифра, который отображает открытый
общеизвестный алфавит текста в закрытый секретный алфавит. Этот шифр
плох тем, что в секретном тексте, насмотря на его видоизменение,
сохраняются известные вероятности буквосочетаний, по которым
восстановить исходный текст не проблема. Поэтому следующая программа
рекомендуется только как пример для изучения.
/*///////////////////////////////////////////////////////////////
ABC, GNU C++, 2011-01-01
Artix, master@7masterov.ru, icq:53666599, skype:artixmaster
* Error in code? Nothing is perfect!
* Free source for free Linux, use it for free!
* Please, do not remove this comment!
///////////////////////////////////////////////////////////////*/
#include <stdio.h>
#include <string.h>
// Исходный алфавит
char alpha[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ\n";
// Алфавит шифра
char beta[] = " KARBDXEGHUIJZLMFNYOPQSCTVW\n";
int getCodeOf(char *abc, char sym)
{
char *p=abc;
int i=0;
while(*p) {
if (*p==sym) return i;
p=p+1;
i++;
}
return 0;
}
char getCharOf(char *abc, int code)
{
return *(abc+code);
}
int main()
{
char str[]="HELLO AND WELCOME FROM MOSCOW RUSSIA\0";
char sec[]="-----------------------------------------------\0";
int LEN = strlen(str);
// encode
for(int i=0;i<LEN;i++)
{
char n = getCharOf( beta, getCodeOf(alpha,str[i]) );
printf("%c",n);
sec[i] = n;
}
printf("\n");
// decode
for(int i=0;i<LEN;i++)
{
char n = getCharOf( alpha, getCodeOf(beta,sec[i]) );
printf("%c",n);
}
printf("\n");
return 0;
}
Справочник алгоритмов v0.05 © 2007-2025 Igor Salnikov aka SunDoctor