L1ghT
20.03.2014, 21:37 | Сообщение # 26
Пользователи
Сообщений: 36
|
Добрый день уважаемые пользователи форума. Всем нам нужна защита информации которую мы не хотим отдать недругу. Да это бывает редко, да и не с каждым такое может случится что вашу к примеру базу данных игроков слил ваш знакомый которому вы доверяете, а спустя время после разногласий он сможет ею воспользоватся не в лучшую для вас сторону. Поэтому нужно хранить важную для вас информацию в скрытом виде.
Хочу вам представить кодер который как кодирует так и декодирует информацию, имеет простую настройку кодирования.
Кодер: Код #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
|
|