Приветствую вас, Гость | Вторник, 22.07.2025, 12:49
Главная ? Форум ? Новости соц.сетей ? Всё для uCoz ? Набор модераторов
Реклама
Мини-чат
Топ пользователей
Баннеробмен
Последние посты
Горячие обсуждения
  • Страница 1 из 1
  • 1
Кодирование информации.
L1ghT
20.03.2014, 21:37 | Сообщение # 26
Пользователи
Сообщений: 36
1

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

Хочу вам представить кодер который как кодирует так и декодирует информацию, имеет простую настройку кодирования.

Кодер:
Код
#include <a_samp>

#define CODER_1 47 // Любое значение от 1 до 127
#define CODER_2 93 // Любое значение от 1 до 127

new rb[] = {0,1,2,3,4,5,6};//Задайте числа от 0 до 6 в любой последовательности (Смотреть пример)

//ПРИМЕР
//new rb[] = {4,1,3,0,2,6,5};
//new rb[] = {2,0,1,5,3,6,4};
//new rb[] = {5,3,0,6,1,4,2};

public OnGameModeInit()
{
  for(new i=0;i<30;i++)
  {
   new myword[] = "Mark_Edisson";
   new buffer[sizeof(myword)*2];
   format(buffer,sizeof(buffer),"%s",coder(myword,sizeof(myword)));
   new n_buffer[sizeof(myword)];
   format(n_buffer,sizeof(n_buffer),"%s",decoder(buffer,sizeof(myword)*2));
   printf("%s >> %s >> %s ",myword,buffer,n_buffer);
  }
  return 1;
}

//------------------------------------------------------------------------------
stock coder(word[],size)
{
  new n_word[256];
  for(new i=0;i<size-1;i++)
  {
   new bb[8];//Buffer Bits
      getbit(word[i],bb,8);

      new tbb[4];// two Buffer bits
      tbb[0] = bb[4];
      tbb[1] = bb[5];
      tbb[2] = bb[6];
      tbb[3] = bb[7];

      n_word[i*2] = cript(bb) + CODER_1;
      n_word[i*2+1] = cript(tbb) + CODER_2;
  }
  return n_word;
}

stock decoder(word[],size)
{
  new n_word[256];
  for(new i=0;i<(size/2)-1;i++)
  {
      n_word[i] = decript(word[i*2] - CODER_1)*16+decript(word[i*2+1] - CODER_2);
  }
  return n_word;
}

//------------------------------------------------------------------------------

stock cript(cw[])
{
  cw[4] = cw[0] ^ cw[1] ^ cw[2];
  cw[5] = cw[0] ^ cw[1] ^ cw[3];
  cw[6] = cw[0] ^ cw[2] ^ cw[3];

  new rand = random(7);
  cw[rand] = !cw[rand];
   
  return buildword(cw,7);
}
//------------------------------------------------------------------------------
stock decript(word)
{
     new cw[8];//Cript Word
  degetbit(word,cw);

  new s[4];//Sindrom
  s[0] = cw[0] ^ cw[1] ^ cw[2] ^ cw[4];
  s[1] = cw[0] ^ cw[1] ^ cw[3] ^ cw[5];
  s[2] = cw[0] ^ cw[2] ^ cw[3] ^ cw[6];

  cw[0] = cw[0] ^ (s[0]  &  s[1]  &  s[2]);
  cw[1] = cw[1] ^ (s[0]  &  s[1]  &  ~s[2]);
  cw[2] = cw[2] ^ (s[0]  &  ~s[1]  &  s[2]);
  cw[3] = cw[3] ^ (~s[0]    &  s[1]  &  s[2]);

  word = debuildword(cw,4);
  return word;
}
//------------------------------------------------------------------------------
stock getbit(word,bitword[],rank)
{
  for(new i=0;i<rank;i++)
  {
   new mask = 1 << i;
   if(word & mask)
       bitword[rank-1-i] = 1;
   else
       bitword[rank-1-i] = 0;
  }
}

stock degetbit(word,bitword[])
{
  for(new i=0;i<7;i++)
  {
   new mask = 1 << i;
   if(word & mask)
       bitword[rb[i]] = 1;
   else
       bitword[rb[i]] = 0;
  }
}

stock buildword(cw[], rank)
{
  new word = 0;
  for(new i=0;i<rank;i++)
      if(cw[rb[i]])
          word = word | (1 << i);
  return word;
}

stock debuildword(cw[], rank)
{
  new word = 0;
  for(new i=0;i<rank;i++)
      if(cw[i])
          word = word | (8 >> i);
  return word;
}

Как использовать и настраивать:

Цитата
coder(word[],size) - Кодирует строку word[] размером size.
decoder(word[],size) - Декодирует строку word[] размером size
CODER_1/2- Переменная размером от 1 до 127 отвечающая за уникальность кодера.
new rb[] = {0,1,2,3,4,5,6} - Заданная вами уникальная комбинация кодирования (Расположить числа от 0 до 6 в любом порядке)


+

Надежная защита
Каждый символ кодируется в 7 рандомных комбинациях
Не так просто подобрать используемую комбинацию
Легкость перестройки
Возможность декодирования информации

-

Размер кодируемой строки увеличивается в два раза
Относительно медленная работа
Пример того что будет получаться:
Код
[14:39:41] Mark_Edisson >> G{џ?‘«~“іG‡—G{MAsѓm™І«J >> Mark_Edisson  
[14:39:41] Mark_Edisson >> Wd™cI{ЃЇ°§“«e—Rѓiѓr«¤ЈT >> Mark_Edisson  
[14:39:41] Mark_Edisson >> eЈc…Ј~‡Іo[WњЋDsDQ—і«K >> Mark_Edisson  
[14:39:41] Mark_Edisson >> §pњџS‹—z‡іeђ{e™MAaS±™ІњK >> Mark_Edisson  
[14:39:41] Mark_Edisson >> Gњcy[’ђ°WЌњ§—RDrѓrњі[l >> Mark_Edisson  
[14:39:41] Mark_Edisson >> G@Ј•c‹{ўOіe‡™§«FcQ?±њ¤—K >> Mark_Edisson  
[14:39:41] Mark_Edisson >> op[]?‹[„“іGЇ[h{MAsSi—¬™H >> Mark_Edisson  
[14:39:41] Mark_Edisson >> §^{}Dy{ўO”eЇњh{ЋSrѓr{tЈ< >> Mark_Edisson  
[14:39:41] Mark_Edisson >> h^Ј}S©њ’Ќ”e“њGњRDr;Qњ¤[T >> Mark_Edisson  
[14:39:41] Mark_Edisson >> k_ЈDЉ—B“to‡{k[Fѓ±Si«¬Јl >> Mark_Edisson  
[14:39:41] Mark_Edisson >> §pЈЎ?‹™~ЇІoЇ[h{M?iciњt™< >> Mark_Edisson  
[14:39:41] Mark_Edisson >> hXЈ}ѓ©[BOІW“Јo{MSr;Qњ°«< >> Mark_Edisson  
[14:39:41] Mark_Edisson >> k_—ЎD‹Јў“Іhђ{e«Ћ;Q?r[t{H >> Mark_Edisson  
[14:39:41] Mark_Edisson >> eЈ•?‘ЈЃ“Іk‡«h[PAaDm[І{< >> Mark_Edisson  
[14:39:41] Mark_Edisson >> §p[};‘њBЇtkЈe{PcacQ{і—l >> Mark_Edisson  
[14:39:41] Mark_Edisson >> o^«џѓ‘«„Ќ¬W«o«FDmѓ±—¬«T >> Mark_Edisson  
[14:39:41] Mark_Edisson >> o^Јџѓ©{ЃO”kњh«>AQ?a[”—< >> Mark_Edisson  
[14:39:41] Mark_Edisson >> ed«ћAy™„tk{e™MAm;±™”—H >> Mark_Edisson  
[14:39:41] Mark_Edisson >> od—ћcI«zЇіhO™k™Pѓa;QЈ”њЊ >> Mark_Edisson  
[14:39:41] Mark_Edisson >> edЈћD‘™zђІGO{§ЈRS±Dmњіњl >> Mark_Edisson  
[14:39:41] Mark_Edisson >> §d—?Љ—’“Іoђ«G™MDi;a{ІЈH >> Mark_Edisson  
[14:39:41] Mark_Edisson >> §_™}AIњ’¬eO—W«P;sS±њ¬[Њ >> Mark_Edisson  
[14:39:41] Mark_Edisson >> hX™џD…{~“іW‡{oњMѓrS±Ј¬ЈJ >> Mark_Edisson  
[14:39:41] Mark_Edisson >> o_™•cyњЃ“Іh“њk—nAiѓm«ІњJ >> Mark_Edisson  
[14:39:41] Mark_Edisson >> W_[Ў?I«Ѓ‡іWO[§™Ћ;iDi—°—K >> Mark_Edisson  
[14:39:41] Mark_Edisson >> h^Ј•;Iњ„°oO[W—P;s;i«t[J >> Mark_Edisson  
[14:39:41] Mark_Edisson >> o^[}Dy{z¬hOЈk—PcQѓrЈ”Јl >> Mark_Edisson  
[14:39:41] Mark_Edisson >> G^{џ;I«Ѓ¬o‡™W™M;iSQњ¬{K >> Mark_Edisson  
[14:39:41] Mark_Edisson >> hd™ћSЉ[ўЌІoЇ[e—FѓscsЈ”њЊ >> Mark_Edisson  
[14:39:41] Mark_Edisson >> §^[џAЉњ’ђ°GOЈk™nciAQЈі™l >> Mark_Edisson

Автор: Mark_Edisson
/index/8-1
  • Страница 1 из 1
  • 1
Поиск: