FNAm2

FNAm2
FNAm2(Feistel Net Algorithm mark 2)
Создатель:

Алексей Андреевич Кобзин, Украина

Создан:

2009 г.

Размер ключа:

512 бит

Размер блока:

128 бит

Число раундов:

64

Тип:

Сеть Фейстеля

FNAm2симметричный блочный крипто алгоритм типа «Сеть Фейстеля», разработанный в 2009 году. Алгоритм является продолжением идеи, предложенной создателями TEA, с увеличенным количеством раундов, размером ключа, длинной блока и с добавленной генерацией подключей.

Содержание

Безопасность

Алгоритм не был исследован криптоаналитиками, но по заявлению автора, он устойчив к большинству статистических тестов и более устойчив к криптоатакам, чем TEA, или XTEA.

Пример кода на языке C

Алгоритм, как и другие варианты алгоритма TEA основан на операциях с 32-х разрядными двоичными целыми числами как unsigned long и int.

void fnam2_crypt(unsigned long &b1,unsigned long &b2,unsigned long &b3,unsigned long &b4);
void fnam2_decrypt(unsigned long &b1,unsigned long &b2,unsigned long &b3,unsigned long &b4);
//Key initialithation
int key[16];
//Num -- then number of 128-bit block in file
unsigned long Num;
 
 
 
void fnam2_crypt(unsigned long &b1,unsigned long &b2,unsigned long &b3,unsigned long &b4)
{
 int subkey,i,ip,im;
 
 for(int r=0;r<64;r++)
 {
  //Selecting the part of key for a concrete stage
  i=r%16;
  if(i==16) {ip=1;im=15;}
  if(i==1) {ip=2;im=16;}
  else {ip=i+1;im=i-1;}
 
  //Generating the subkey on the basis of nmber part of a key,
  //number of the block in a file and number of a round
  subkey=key[i]*r+(key[im]*Num+key[ip]);
 
  //F - function
  b1+=(((b2>>16)^((b2<<25)+subkey))+(subkey*(~(b2<<7))));
  b1=~b1;
  r++;
 
  i=r%16;
  if(i==16) {ip=1;im=15;}
  if(i==1) {ip=2;im=16;}
  else {ip=i+1;im=i-1;}
  subkey=key[i]*r+(key[im]*Num+key[ip]);
  b2+=(((b3>>16)^((b3<<25)+subkey))+(subkey*(~(b3<<7))));
  b2=~b2;
  r++;
 
  i=r%16;
  if(i==16) {ip=1;im=15;}
  if(i==1) {ip=2;im=16;}
  else {ip=i+1;im=i-1;}
  subkey=key[i]*r+(key[im]*Num+key[ip]);
  b3+=(((b4>>16)^((b4<<25)+subkey))+(subkey*(~(b4<<7))));
  b3=~b3;
  r++;
 
  i=r%16;
  if(i==16) {ip=1;im=15;}
  if(i==1) {ip=2;im=16;}
  else {ip=i+1;im=i-1;}
  subkey=key[i]*r+(key[im]*Num+key[ip]);
  b4+=(((b1>>16)^((b1<<25)+subkey))+(subkey*(~(b1<<7))));
  b4=~b4;
 }
 Num++;
}
 
void fnam2_decrypt(unsigned long &b1,unsigned long &b2,unsigned long &b3,unsigned long &b4)
{
 int subkey,i,ip,im;
 
 for(int r=63;r>=0;r--)
 {
 i=r%16;
  if(i==16) {ip=1;im=15;}
  if(i==1) {ip=2;im=16;}
  else {ip=i+1;im=i-1;}
  subkey=key[i]*r+(key[im]*Num+key[ip]);
  b4=~b4;
  b4-=(((b1>>16)^((b1<<25)+subkey))+(subkey*(~(b1<<7))));
  r--;
 
  i=r%16;
  if(i==16) {ip=1;im=15;}
  if(i==1) {ip=2;im=16;}
  else {ip=i+1;im=i-1;}
  subkey=key[i]*r+(key[im]*Num+key[ip]);
  b3=~b3;
  b3-=(((b4>>16)^((b4<<25)+subkey))+(subkey*(~(b4<<7))));
  r--;
 
  i=r%16;
  if(i==16) {ip=1;im=15;}
  if(i==1) {ip=2;im=16;}
  else {ip=i+1;im=i-1;}
  subkey=key[i]*r+(key[im]*Num+key[ip]);
  b2=~b2;
  b2-=(((b3>>16)^((b3<<25)+subkey))+(subkey*(~(b3<<7))));
  r--;
 
  i=r%16;
  if(i==16) {ip=1;im=15;}
  if(i==1) {ip=2;im=16;}
  else {ip=i+1;im=i-1;}
  subkey=key[i]*r+(key[im]*Num+key[ip]);
  b1=~b1;
  b1-=(((b2>>16)^((b2<<25)+subkey))+(subkey*(~(b2<<7))));
 }
 Num++;
 
}

См. также

Ссылки

Реализация FNAm2 на языке C


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "FNAm2" в других словарях:

  • Шифрование — Шифрование  преобразование информации в целях сокрытия от неавторизованных лиц, с предоставлением, в это же время, авторизованным пользователям доступа к ней. Главным образом, шифрование служит задаче соблюдения конфиденциальности… …   Википедия

  • RC2 — (Ron s Code 2 или Rivest s Cipher 2) блочный шифр (длина блока 64 бита) с переменной длиной ключа, разработанный Роном Ривестом. Алгоритм является более быс …   Википедия

  • RC4 — (англ. Rivest Cipher 4 или англ. Ron’s Code, также известен как ARCFOUR или ARC4 (англ. Alleged RC4))  потоковый шифр, широко применяющийся в различных системах защиты информации в компьютерных сетях (например, в протоколах… …   Википедия

  • RC5 — Создатель: Рон Ривест Создан: 1994 год Опубликован …   Википедия

  • Криптография — Немецкая криптомашина Lorenz использовалась во время Второй мировой войны для шифрования самых секретных сообщений Криптография (от др. греч …   Википедия

  • Сеть Фейстеля — (конструкция Фейстеля)  один из методов построения блочных шифров. Сеть представляет собой определённую многократно повторяющуюся (итерированную) структуру, называющуюся ячейкой Фейстеля. При переходе от одной ячейки к другой меняется ключ,… …   Википедия

  • DES — У этого термина существуют и другие значения, см. DES (значения). DES, Data Encryption Standard Создатель: IBM Создан: 1977 г. Опубликован: 1977 г. Размер ключа: 56 бит Размер блока: 64 бит …   Википедия

  • Поточный шифр — это симметричный шифр, в котором каждый символ открытого текста преобразуется в символ шифрованного текста в зависимости не только от используемого ключа, но и от его расположения в потоке открытого текста. Поточный шифр реализует другой подход к …   Википедия

  • Симметричные криптосистемы — (также симметричное шифрование, симметричные шифры)  способ шифрования, в котором для шифрования и расшифровывания применяется один и тот же криптографический ключ. До изобретения схемы асимметричного шифрования единственным существовавшим… …   Википедия

  • Блочный шифр — Общая схема работы блочного шифра Блочный шифр  разновидность симметричного шифра …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»