Методы и задачи криптографической защиты информации. Мартынов А.И. - 30 стр.

UptoLike

Составители: 

Шифр моноалфавитной подстановки
Шифр моноалфавитной подстановкиэто один из самых древних
шифров на Земле. Шифр Цезаря является частным случаем этого шифра.
Прежде всего выбирается нормативный алфавит, то есть набор символов,
которые будут использоваться при составлении сообщений, требующих
зашифровки. Допустим, это будут прописные буквы русского алфавита
(исключая буквы «Ё» и «Ъ») и пробел. Таким образом, нормативный алфавит
будет состоять из 32 символов. Затем выбирается алфавит шифрования и
устанавливается взаимно однозначное соответствие между символами
нормативного алфавита и символами алфавита шифрования. Алфавит
шифрования может состоять из произвольных символов, в том числе и из
символов нормативного алфавита.
При шифровании исходного сообщения, каждый символ открытого
текста заменяется соответствующим ему символом алфавита шифрования.
Нормативный алфавит 
Алфавит шифрования 
Например, слово ’ù в зашифрованном виде будет выглядеть как
’ù.
Метод моноалфавитной замены можно представить как числовые
преобразования символов исходного текста. Для этого каждой букве
нормативного алфавита ставится в соответствие некоторое число, называемое
числовым эквивалентом этой буквы. Тогда моноалфавитные подстановки
можно описать выражением:
()()
nSMC
iii
mod+=
, где
ii
MC
,
числовые
эквиваленты символов алфавита шифрования и нормативного алфавита
соответственно,
i
S
коэффициент сдвига, nмощность алфавита.
В художественной литературе классическим примером шифра замены
является известный шифр «Пляшущие человечки» К. Дойля. В нем буквы
текста заменялись символическими фигурками людей. Ключом такого шифра
являлись позы человечков, заменяющих буквы.
В случае использования алфавита, содержащего только латинские
прописные, буквы можно предложить такой алгоритм на языке С++:
//  
const char* norm = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//  
const char* shifr = "7d*a1j/f6oeg(,.)mb2&#p?{]@";
//     
//     
//  
// char* toCode ·  
// ret char* -  
char* MonoCrypt(char* toCode)
{
int i,j;
for (i=0;toCode[i]!=0;i++)