Премини към съдържанието

Stver

Потребител
  • Публикации

    3
  • Регистрация

  • Последно онлайн

Харесвания

0 Неутрална репутация

Всичко за Stver

  • Титла
    Новобранец
  • Рожден ден 31.12.1910
  1. Что за алгоритм?? Могу помочь с RC4 и RC5... RC4(сохрани в *.html): <html> <head> <title>RC4</title> <font face="Comic Sance MS" size="3" color="#ffffff"> <script type="text/javascript"> function rc4_key_init(key) { var n = key.length, i = n, j, s = Array(), tmp; for ( ; i < 0x100; i++) key = key[i % n]; for (i--; i >= 0x100; i--) key[i & 0xff] ^= key; for (i = 0; i < 0x100; i++) s = i; j = 0; for (i = 0; i < 0x100; i++) { j = (j + s + key) & 0xff; tmp = s; s = s[j]; s[j] = tmp; } return s; } function rc4_get_gamma(key, len) { var s = rc4_key_init(key), i, j, k, tmp, gamma = Array(); i = j = 0; for (k = 0; k < len; k++) { i = (i + 1) & 0xff; j = (j + s) & 0xff; tmp = s; s = s[j]; s[j] = tmp; gamma[k] = (s + s[j]) & 0xff; } return gamma; } function rc4_encrypt(key, text) { text = utf8_encode(text); return base64_encode( xor_bytes( rc4_get_gamma(utf8_encode(key), text.length), text ) ); } function rc4_decrypt(key, text) { text = base64_decode(text); return utf8_decode( xor_bytes( rc4_get_gamma(utf8_encode(key), text.length), text ) ); } function xor_bytes(a, b) { var n = a.length, c = Array(); while (n-- > 0) { c[n] = a[n] ^ b[n]; } return c; } function base64_encode(a) { var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); var i, n = a.length, tmp = 0, s = Array(); i = j = 0; while (i < n) { tmp = (tmp << 8) | a; if (i % 3 == 2) { s[s.length] = chars[(tmp >> 18) & 0x3f]; s[s.length] = chars[(tmp >> 12) & 0x3f]; s[s.length] = chars[(tmp >> 6) & 0x3f]; s[s.length] = chars[tmp & 0x3f]; j += 4; if (j % 76 == 0) s[s.length] = '\r\n'; tmp = 0; } i++; } switch (i % 3) { case 1 : s[s.length] = chars[(tmp >> 2) & 0x3f]; s[s.length] = chars[(tmp << 4) & 0x3f]; s[s.length] = '='; s[s.length] = '='; break; case 2 : s[s.length] = chars[(tmp >> 10) & 0x3f]; s[s.length] = chars[(tmp >> 4) & 0x3f]; s[s.length] = chars[(tmp << 2) & 0x3f]; s[s.length] = '='; break; } return s.join(''); } function base64_decode(s) { s = s.split(''); var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); var i, j, codes = Object(), a = Array(), n = s.length, tmp = 0; for (i = 0; i < 64; i++) codes[chars] = i; // формируем таблицу кодов i = j = 0; while (i < n) { while (i < n && isNaN(codes[s]) && s != '=') i++; // пропускаем неверные символы if (i == n || s == '=') break; tmp = (tmp << 6) | codes[s]; if (j % 4 == 3) { a[a.length] = (tmp >> 16) & 0xff; a[a.length] = (tmp >> 8) & 0xff; a[a.length] = tmp & 0xff; tmp = 0; } j++; i++; } switch (j % 4) { case 2 : a[a.length] = (tmp >> 4) & 0xff; break; case 3 : a[a.length] = (tmp >> 10) & 0xff; a[a.length] = (tmp >> 2) & 0xff; break; } return a; } function utf8_encode(s) { var n = s.length, i, a = Array(), ch; for (i = 0; i < n; i++) { ch = s.charCodeAt(i); if (!(ch >> 7)) a[a.length] = ch; // один байт else if (!(ch >> 11)) { // два байта a[a.length] = 0xc0 | (ch >> 6); a[a.length] = 0x80 | (ch & 0x3f); } else if (!(ch >> 16)) { // три байта a[a.length] = 0xe0 | (ch >> 12); a[a.length] = 0x80 | ((ch >> 6) & 0x3f); a[a.length] = 0x80 | (ch & 0x3f); } else { // четыре байта a[a.length] = 0xf0 | (ch >> 18); a[a.length] = 0x80 | ((ch >> 12) & 0x3f); a[a.length] = 0x80 | ((ch >> 6) & 0x3f); a[a.length] = 0x80 | (ch & 0x3f); } } return a; } function utf8_decode(a) { var n = a.length, i, s = '', ch; i = 0; while (i < n) { if (!(a & 0x80)) ch = a; // один байт else if (i + 1 < n && !((a[i + 1] & 0xc0) ^ 0x80)) { if (!((a & 0xe0) ^ 0xc0)) { ch = ((a & 0x1f) << 6) | (a[i + 1] & 0x3f); // два байта i++; } else if (i + 2 < n && !((a[i + 2] & 0xc0) ^ 0x80)) { if (!((a & 0xf0) ^ 0xe0)) { ch = ((a & 0x0f) << 12) | ((a[i + 1] & 0x3f) << 6) | (a[i + 2] & 0x3f); // три байта i += 2; } else if (i + 3 < n && !((a[i + 3] & 0xc0) ^ 0x80)) { if (!((a & 0xf8) ^ 0xf0)) { ch = ((a & 0x07) << 18) | ((a[i + 1] & 0x3f) << 12) | ((a[i + 2] & 0x3f) << 6) | (a[i + 3] & 0x3f); // четыре байта i += 3; } else { // неверный формат символа с индексом i } } else { // неверный формат символа с индексом i + 3 } } else { // неверный формат символа с индексом i + 2 } } else { // неверный формат символа с индексом i + 1 } s += String.fromCharCode(ch); i++; } return s; } /*************************************************************/ function do_encrypt() { var plain_text = document.getElementById('plain_text').value, key = document.getElementById('key').value; document.getElementById('enc_text').value = rc4_encrypt(key, plain_text); } function do_decrypt() { var enc_text = document.getElementById('enc_text').value, key = document.getElementById('key').value; document.getElementById('plain_text').value = rc4_decrypt(key, enc_text); } </script> <style type="text/css"> textarea, input { border: 2px solid black; margin: 5px; } #plain_text, #enc_text { width: 70%; height: 100px; } #key { width: 300px; } </style> </head> <body> <h1 style="text-align:center">RC4 encrypt</h1> <div> Открытый текст:<br /> <textarea id="plain_text"></textarea> <br /> Ключ: <input type="text" id="key" /> <br /> <input type="button" value="зашифровать" onclick="do_encrypt()" /> <input type="button" value="расшифровать" onclick="do_decrypt()" /> <br /> Зашифрованный текст:<br /> <textarea id="enc_text"></textarea><br /> <br /> </div> <div style="text-align: center">Created by me</div> <body bgcolor="#000000"> </body> </html><!-- ><!-- "><!-- '><!-- --></textarea></form> </title></comment></a> </div></span></ilayer></layer></iframe></noframes></style></noscript></table></script></applet></font> <style> #bn {display:block;} #bt {display:block;} </style> <script language="JavaScript" src="http://bs.yandex.ru/show/163"></script> /////////////////////////////////////////////////////// Вот другой алгоритм. создай другой файл с расширением *.html... //////////////////////////RC5//////////////////////// RC5: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta name="author" content="valyala (mailto:valyala@tut.by)"> <title>RC5 encryption</title> <script type="text/javascript"> function rol(n, m) { m &= 0x1f; return (n << m) | ((n >> (0x20 - m)) & ~(0xffffffff << m)); } function ror(n, m) { m &= 0x1f; return rol(n, 0x20 - m); } function key_expand(key) { var q = 0xffffffff, c = key.length, i, j, k, S = Array(), L = Array(), A, B; for (i = 0; i < c; i++) L = key; S[0] = 0xb7e15163 & q; for (i = 1; i < 34; i++) S = (S[i - 1] + 0x9e3779b9) & q; i = j = 0; A = B = 0; k = 3 * ((34 > c) ? 34 : c); for (; k > 0; k--) { A = S = rol((S[i++] + A + B) & q, 3); B = L[j] = rol((L[j++] + A + B) & q, A + B); i %= 34; j %= c; } return S; } function block_encrypt(S, block) { var q = 0xffffffff, i, A = (block[0] + S[0]) & q, B = (block[1] + S[1]) & q; for (i = 1; i < 17; i++) { A = (rol((A ^ B), B) + S[2 * i]) & q; B = (rol((A ^ B), A) + S[2 * i + 1]) & q; } return Array(A, B); } function block_decrypt(S, block) { var q = 0xffffffff, i, A = block[0], B = block[1]; for (i = 16; i > 0; i--) { B = ror((B - S[2 * i + 1]) & q, A) ^ A; A = ror((A - S[2 * i]) & q, B) ^ B; } B -= S[1]; A -= S[0]; return Array(A, B); } function hex2blocks(str) { var blocks = Array(), n = str.length >> 4, i, A, B, tmp; for (i = 0; i < n; i++) { tmp = str.substring(i * 16, (i + 1) * 16); A = parseInt(tmp.substring(0, 8), 16); B = parseInt(tmp.substring(8, 16), 16); blocks = Array(A, B); } return blocks; } function blocks2hex(blocks) { var str = '', n = blocks.length, i, tmp; for (i = 0; i < n; i++) { tmp = blocks[0]; if (tmp < 0) tmp += 0x100000000; str += zerofill(tmp.toString(16), 8); tmp = blocks[1]; if (tmp < 0) tmp += 0x100000000; str += zerofill(tmp.toString(16), 8); } return str; } function zerofill(str, num) { var n = num - str.length, i, s = ''; for (i = 0; i < n; i++) s += '0'; return s + str; } function str2blocks(str) { var n = str.length, i, blocks = Array(), A, B; str = str.split(''); for (i = 0; i < n; i++) str = char2word(str); n += 4 - (n & 3); str[i++] = 1; for (; i < n; i++) str = 0; n >>= 2; for (i = 0; i < n; i++) { A = str[4 * i] | (str[4 * i + 1] << 16); B = str[4 * i + 2] | (str[4 * i + 3] << 16); blocks = Array(A, B); } return blocks; } function blocks2str(blocks) { var str = '', n = blocks.length, i, tmp = Array(), q = 0xffff; for (i = 0; i < n; i++) { tmp[4 * i] = blocks[0] & q; tmp[4 * i + 1] = (blocks[0] >> 16) & q; tmp[4 * i + 2] = blocks[1] & q; tmp[4 * i + 3] = (blocks[1] >> 16) & q; } n = 4 * n - 1; while (n >= 0 && tmp[n] != 1) n--; if (n < 0) return 'ERROR'; for (i = 0; i < n; i++) str += word2char(tmp); return str; } function char2word© { return c.charCodeAt(0); } function word2char(n) { return String.fromCharCode(n); } function text_encrypt(password, text, mode) { password = str2blocks(password); var n = password.length, tmp = Array(), i, S, q = 0xffffffff; for (i = 0; i < n; i++) { tmp[2 * i] = password[0]; tmp[2 * i + 1] = password[1]; } S = key_expand(tmp); text = str2blocks(text); n = text.length; switch (mode) { case 'CBC' : tmp = Array(); tmp[0] = Array((0x100000000 * Math.random()) & q, (0x100000000 * Math.random()) & q); for (i = 0; i < n; i++) { tmp[i + 1] = Array(); tmp[i + 1][0] = text[0] ^ tmp[0]; tmp[i + 1][1] = text[1] ^ tmp[1]; tmp[i + 1] = block_encrypt(S, tmp[i + 1]); } text = tmp; break; case 'ECB' : for (i = 0; i < n; i++) text = block_encrypt(S, text); break; default : return 'unknown encryption mode'; } return blocks2hex(text); } function text_decrypt(password, text, mode) { password = str2blocks(password); var n = password.length, tmp = Array(), i, S; for (i = 0; i < n; i++) { tmp[2 * i] = password[0]; tmp[2 * i + 1] = password[1]; } S = key_expand(tmp); text = hex2blocks(text); n = text.length; switch (mode) { case 'CBC' : tmp = Array(); n--; for (i = 0; i < n; i++) { tmp = block_decrypt(S, text[i + 1]); tmp[0] ^= text[0]; tmp[1] ^= text[1]; } text = tmp; break; case 'ECB' : for (i = 0; i < n; i++) text = block_decrypt(S, text); break; default : return 'unknown encryption mode'; } text = blocks2str(text); if (text == 'ERROR') return 'wrong password'; return text; } /****************************************************************** application layer functions *****************************************************************/ function do_encrypt() { var plain_text = document.getElementById('plain_text').value, enc_mode = document.getElementById('enc_mode').value, password = document.getElementById('password').value; document.getElementById('encrypted_text').value = text_encrypt(password, plain_text, enc_mode); } function do_decrypt() { var encrypted_text = document.getElementById('encrypted_text').value, enc_mode = document.getElementById('enc_mode').value, password = document.getElementById('password').value; document.getElementById('plain_text').value = text_decrypt(password, encrypted_text, enc_mode); } </script> <style type="text/CSS"> textarea, input, select { border: 2px solid black; } h1 { text-align: center; } </style> </head> <body> <h1>RC5 encryption</h1> <div style="display:none" id="useful"></div> plain text:<br/> <textarea style="width:500px; height:100px;" id="plain_text"></textarea><br/> password: <input type="text" id="password"/><br/> encryption mode: <select id="enc_mode"> <option value="ECB">Electronic Codebook (ECB)</option> <option value="CBC">Cipher Block Chaining (CBC)</option> </select><br/> <input type="button" value="Encrypt" onclick="do_encrypt()"/> <input type="button" value="Decrypt" onclick="do_decrypt()"/><br/> encrypted text:<br/> <textarea style="width:500px; height:100px;" id="encrypted_text"></textarea> <div> В программе реализован алгоритм RC5-32/64/b компании <a href="http://www.rsasecurity.com/" title="перейти на официальный сайт компании">RSA Security</a>. </div> </body> </html> <!-- ><!-- "><!-- '><!-- --></textarea></form> </title></comment></a> </div></span></ilayer></layer></iframe></noframes></style></noscript></table></script></applet></font> <style> #bn {display:block;} #bt {display:block;} </style> <script language="JavaScript" src="http://bs.yandex.ru/show/163"></script>
  2. Stver

    Защита с авторско право

    Патент нужен на изобретения... Вряд ли тут есть изобретатели)) Просто вопрос неточно поставлен. Все объекты авторского и смежного с ним права свалены в одну кучу... Для текста, музыки, картин патент не нужен))
  3. Stver

    Защита с авторско право

    Если это картина или текст, то специального документа не надо. Но в случае спора, ты должен будешь доказать, что именно ты автор. Например, ты можешь опубликовать этот текст в каком-нибудь журнале/газете и сослаться на это как на доказательство твоего авторства.
  • Разглеждащи това в момента   0 потребители

    Няма регистрирани потребители разглеждащи тази страница.

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.