Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Совместное шифрование/дешифрование, JavaScript & PHP function? 
:(
    Опции темы
IZ@TOP
Дата 20.4.2004, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Есть ли в PHP и JavaScript схожие функци шифрования/дешифрования? Задача следующая - послать клиенту зашифрованные данные (шифроваться на сервере будут при помощи РНР), а затем рассшифровать их на клиенте, в момент передачи данных обратно на сервер, зашифровать темже алгоритмом данные на клиенте (ессно с помощью JavaScript), и передать их на сервер, где сервер их рассшифрует. Шифрование должно производится с помощью ключа.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
VVp
Дата 20.4.2004, 14:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Боюсь, таких функций нет. Я в свое время сталкивался с подобной проблемой.
Можно конечно, такие функции написать самому, но толку 0, поскольку javascript виден на клиентской стороне и смысла от такого шифрования никакого.
  Вверх
IZ@TOP
Дата 20.4.2004, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



VVp, смысл есть, иначе бы я этим не занялся. Пусть клиент хоть хакер/крякер, толку ему от того что он увидит код и ключ по которому шифруется контент? Все равно ключ генерируется автоматом smile.gif


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
VVp
Дата 20.4.2004, 16:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну да, главное чтобы не увидел тело твоей функции smile.gif
  Вверх
IZ@TOP
Дата 20.4.2004, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



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

PS народ, ну неужели нет таких функций? Я что то видел что на стороне сервера данные шифруются, а с помощью JS на клиенте расшифровывуются. Неужели нельзя сделать обратное? На стороне клиента зашифровать, а на стороне сервера расшифровать?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Secandr
Дата 20.4.2004, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: нет
Всего: 39



IZ@TOP ты передаёшь ключь и функцию дешефровки одновремено, кто мешает мне снифером перехватить и то и другое и спокойно читать твои "тайные" сообщения.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
IZ@TOP
Дата 20.4.2004, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Secandr, это прикол, это всего лишь промежуточный уровень защиты. Есть еще несколько. Как я уже сказал, нужно понять логику программы что бы докапаться до истины. А вообще нет совершенной защиты. Даже SSL наверное можно так же как ты говоришь рассшифровать, если следить от начала до конца сеанса. Ты бы лучше подсказал на счет функций.



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Sardar
Дата 20.4.2004, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



В Нетскейпе старом(не Gecko) обьект security(не помню точно) был, через него можно было шифровать и т.п. Теперь этого по моему нет... Все это теперь ставтися в виде расширений браузера.
Можно написать шифрование на JS, но сложного ничего не получится. На js не плохо LZ77(сжатие по словарю) реализовать можно... smile.gif


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
IZ@TOP
Дата 21.4.2004, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Мне нужно то что будет точно работать в IE, и можно будет дешифровать в РНР. При этом шифрование не должно потреблять много ресурсов.
Добавлено @ 09:05
Мне бы хоть как защитить данные которые передаются от клиента до сервера. Но это обязательно должно быть шифрование ключем. Если есть конкретные предложения по реализации - жду предложений. В долгу не останусь.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Gold Dragon
Дата 21.4.2004, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 1
Всего: 71



Может быть тебе просто самому придумать или скоммунизмить простой алгоритм и не мудрить.

Даже элементарная перестановка знаков (или бит) и, я не думаю, что кто-нибудь будет глубоко копаться, то есть защита от "дурака". А кому надо, тот и сложный код прочитает... hehe.gif


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 21.4.2004, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Red Dragon, это я понимаю. А как это на JavaScript совместно с РНР организовать?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
IZ@TOP
Дата 21.4.2004, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата
Может быть тебе просто самому придумать или скоммунизмить простой алгоритм и не мудрить.
, мы велосипеды не придумываем, а коммуниздить не любим. Так что придется видимо самому функцию писать sad.gif


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
IZ@TOP
Дата 21.4.2004, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Все, пишу функции шифрации/дешифрации на основе ключа. Для этого мне требуются следующие функции:

1) Преобразование строки в массив c символами.
2) Преобразование знака в его ACSII код.
3) Преобразование ACSII кода в символьное представление.

Вроде все.
Данная реализация будет написана на РНР и JavaScript. Функции, которые мне требуются, необходимы только для JavaScript, поскольку как реализовать данные операции на РНР я знаю.

Нужно срочно!


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Sardar
Дата 21.4.2004, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата
1) Преобразование строки в массив c символами.

Не нужно, т.к. символ ты можешь достать через str.charAt(index)
Цитата
2) Преобразование знака в его ACSII код.

Аналогично: str.charCodeAt(index), но учти что строки в юникоде.
Цитата
3) Преобразование ACSII кода в символьное представление.

Юзаем статический метод String.fromCharCode(code1[,codeN]), опять же строки в юникоде.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
IZ@TOP
Дата 21.4.2004, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Sardar, а как их из югикода обратно преобразовать?



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
IZ@TOP
Дата 21.4.2004, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Еще аопрос. Мне нужно знать точно, сколько всего есть ACSII кодов? Мне нужно сделать деление по модулю. Нужно знать где предел.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Sardar
Дата 21.4.2004, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



А в JS нету "обратно преобразовать" biggrin.gif, он как Java все строки хранит в юникоде. В принципе это не страшно, тебе нужен только первый байт. Но, например, если в заголовках или meta теге появится charset: Cp1251, а в коде: test="Привет Миру!", то test.charCodeAt(index) будет выдавать юникод для кирилици, а если charset: Cp1251, то тот же код будет выдавать юникод для латинских букв с акцентами, умляутами и т.п.
Цитата
знать где предел

\xFFFF, повторяю, тебе по барабану, бери по маске только тот байт который нужен(первый).


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
IZ@TOP
Дата 23.4.2004, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Код
// -------------------------------------------- //
// LDPCrypter v1.4.2Alpha build 20040422 //
// Build date: 22.04.2004   //
// -------------------------------------------- //

var AllChars = Array('_','1','2','3','4','5','6','7','8','9','0','q','Q','w','W','e','E','r','R','t','T','y','Y','u','U','i','I','o','O','p','P','a','A','s','S','d','D','f','F','g','G','h','H','j','J','k','K','l','L','z','Z','x','X','c','C','v','V','b','B','n','N','m','M',' ','`','~','!','@','#','$','%','^','&','*','(',')','-','=','+','\\','|',',','<','.','>','/','?',';',':','\'','"','[','{',']','}','й','Й','ц','Ц','у','У','к','К','е','Е','н','Н','г','Г','ш','Ш','щ','Щ','з','З','х','Х','ъ','Ъ','ф','Ф','ы','Ы','в','В','а','А','п','П','р','Р','о','О','л','Л','д','Д','ж','Ж','э','Э','я','Я','ч','Ч','с','С','м','М','и','И','т','Т','ь','Ь','б','Б','ю','Ю','ё','Ё','№');

function charCode(tChar) {
var i = 0;
while(i < AllChars.length) {
 if(AllChars[i] == tChar) {
  return i;
 }
 i = i + 1;
}
return 0;
}

function LDPDecrypt(cData, cKey) {
var i  = 0;
var k  = 0;
var cDataChar = 0;
var cKeyChar = 0;
var TmpChar = 0;
var TmpDecData = '';
while(i < cData.length) {
 if(k > cKey.length) {
  k = 0;
 }
 cDataChar = charCode(cData.charAt(i));
 cKeyChar = charCode(cKey.charAt(k));
 if(cDataChar + cKeyChar > AllChars.length) {
  TmpChar = cDataChar + cKeyChar - AllChars.length;
 } else {
  TmpChar = cDataChar + cKeyChar;
 }
 TmpDecData = TmpDecData + AllChars[TmpChar];
 k = k + 1;
 i = i + 1;
}
return TmpDecData;
}

function LDPEncrypt(cData, cKey) {
var i  = 0;
var k  = 0;
var cDataChar = 0;
var cKeyChar = 0;
var TmpChar = 0;
var TmpEncData = '';
while(i < cData.length) {
 if(k > cKey.length) {
  k = 0;
 }
 cDataChar = charCode(cData.charAt(i));
 cKeyChar = charCode(cKey.charAt(k));
 if(cDataChar - cKeyChar < 0) {
  TmpChar = cDataChar - cKeyChar + AllChars.length;
 } else {
  TmpChar = cDataChar - cKeyChar;
 }
 TmpEncData = TmpEncData + AllChars[TmpChar];
 k = k + 1;
 i = i + 1;
}
return TmpEncData;
}
// END //


Все, терь пашет. И формочка, если кому интересно поксперементировать:

Код
<style>
body, input, textarea {
font-size: 10px;
font-family: Verdana;
}
</style>

<script src=ldpcrypt.js></script>
<script>
function Encrypt() {
var k = document.getElementById('keycode').value;
var d = document.getElementById('text').value;
document.getElementById('cryptdata').value = LDPEncrypt(d, k);
}

function Decrypt() {
var k = document.getElementById('keycode').value;
var d = document.getElementById('text').value;
document.getElementById('cryptdata').value = LDPDecrypt(d, k);
}
</script>
<form>
<input type=text id=keycode value="Please enter key"><br/>
<textarea style="width:300; height: 100;" id=text>Enter data</textarea><br/>
<textarea style="width:300; height: 100;" id=cryptdata></textarea><br/>
<input type=button onClick="Encrypt();" value=шифровать><br/>
<input type=button onClick="Decrypt();" value=расшифровать><br/>
</form>




--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Gold Dragon
Дата 23.4.2004, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 1
Всего: 71



Прикольно hehe.gif

Если не против, то повзаимствую, авось пригодиться


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 23.4.2004, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Red Dragon, пожалуйста, но тама трабл небольшой все же есть. Как все баги уберу, сообщу.



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Sardar
Дата 24.4.2004, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Вот этот же алгоритм но побыстрее и немного модифицированный.
Народ, не забывайте про хеш-таблицы, а то все больше народу вижу, которые ищют линейно по массиву. Писал на скорую руку, могут быть баги wink.gif.
Код
<script language="Javascript" type="text/javascript">
<!--
Encoder.metods=[]; //set of implemented metods(metod modules)
Encoder.encode=encoder_encode;
Encoder.decode=encoder_decode;
/* metod module {
   encode:function(string indata, string key, string original_data, int level)
   decode:function(string indata, string key, string original_data, int level)
   optional overriding: toString:function() return string -- version of module
  }*/
function Encoder() {
this.toString=function(){return this.version+"\nMetod: "+this.metods.join(" + ");};
this.version="Encoder <IZ@ATOP> v0.1";
this.encode=encoder_encode;
this.decode=encoder_decode;
this.encoded_data=this.decoded_data=null;
}
function encoder_encode(data,key) {
var ret=data;
for(var i=0; i<Encoder.metods.length; i++)
 if((ret=Encoder.metods[i].encode(ret,key,data,i))==null) return false;
return (this.encoded_data=ret);
}
function encoder_decode(data,key) {
var ret=data;
for(var i=Encoder.metods.length-1; i>=0; i--)
 if((ret=Encoder.metods[i].decode(ret,key,data,(Encoder.metods.length-i-1)))==null) return false;
return (this.decoded_data=ret);
}

//Работать будет только с русскими буквами в любой раскладке
IZATOP_metod={
data:{' ':0,'!':1,'"':2,'#':3,'$':4,'%':5,'&':6,'\'':7,'(':8,')':9,'*':10,'+':11,',':12,'-':13,'.':14,'/':15,'0':16,'1':17,'2':18,'3':19,'4':20,'5':21,'6':22,'7':23,'8':24,'9':25,':':26,';':27,'<':28,'=':29,'>':30,'?':31,'@':32,'A':33,'B':34,'C':35,'D':36,'E':37,'F':38,'G':39,'H':40,'I':41,'J':42,'K':43,'L':44,'M':45,'N':46,'O':47,'P':48,'Q':49,'R':50,'S':51,'T':52,'U':53,'V':54,'W':55,'X':56,'Y':57,'Z':58,'[':59,'\\':60,']':61,'^':62,'_':63,'`':64,'a':65,'b':66,'c':67,'d':68,'e':69,'f':70,'g':71,'h':72,'i':73,'j':74,'k':75,'l':76,'m':77,'n':78,'o':79,'p':80,'q':81,'r':82,'s':83,'t':84,'u':85,'v':86,'w':87,'x':88,'y':89,'z':90,'{':91,'|':92,'}':93,'~':94,'\u0401':95,'\u0410':96,'\u0411':97,'\u0412':98,'\u0413':99,'\u0414':100,'\u0415':101,'\u0416':102,'\u0417':103,'\u0418':104,'\u0419':105,'\u041A':106,'\u041B':107,'\u041C':108,'\u041D':109,'\u041E':110,'\u041F':111,'\u0420':112,'\u0421':113,'\u0422':114,'\u0423':115,'\u0424':116,'\u0425':117,'\u0426':118,'\u0427':119,'\u0428':120,'\u0429':121,'\u042A':122,'\u042B':123,'\u042C':124,'\u042D':125,'\u042E':126,'\u042F':127,'\u0430':128,'\u0431':129,'\u0432':130,'\u0433':131,'\u0434':132,'\u0435':133,'\u0436':134,'\u0437':135,'\u0438':136,'\u0439':137,'\u043A':138,'\u043B':139,'\u043C':140,'\u043D':141,'\u043E':142,'\u043F':143,'\u0440':144,'\u0441':145,'\u0442':146,'\u0443':147,'\u0444':148,'\u0445':149,'\u0446':150,'\u0447':151,'\u0448':152,'\u0449':153,'\u044A':154,'\u044B':155,'\u044C':156,'\u044D':157,'\u044E':158,'\u044F':159,'\u0451':160,'\u2116':161},
cdata:[' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','\u0401','\u0410','\u0411','\u0412','\u0413','\u0414','\u0415','\u0416','\u0417','\u0418','\u0419','\u041A','\u041B','\u041C','\u041D','\u041E','\u041F','\u0420','\u0421','\u0422','\u0423','\u0424','\u0425','\u0426','\u0427','\u0428','\u0429','\u042A','\u042B','\u042C','\u042D','\u042E','\u042F','\u0430','\u0431','\u0432','\u0433','\u0434','\u0435','\u0436','\u0437','\u0438','\u0439','\u043A','\u043B','\u043C','\u043D','\u043E','\u043F','\u0440','\u0441','\u0442','\u0443','\u0444','\u0445','\u0446','\u0447','\u0448','\u0449','\u044A','\u044B','\u044C','\u044D','\u044E','\u044F','\u0451','\u2116'],
encode:function(indata,key,original,level) {
    var ret='';
   if(!key||!indata) return null;
   for(var i=0, k=0; i<indata.length; i++, k=(k+1)%key.length) {
    ret+=this.cdata[(
     (this.cdata.length+(this.data[indata.charAt(i)]-this.data[key.charAt(k)]))%this.cdata.length
  )];
   }
   return ret;
 },
decode:function(indata,key,original,level) {
    var ret='';
   if(!key||!indata) return null;
   for(var i=0, k=0; i<indata.length; i++, k=(k+1)%key.length) {
    ret+=this.cdata[(
     (this.data[indata.charAt(i)]+this.data[key.charAt(k)])%this.cdata.length
  )];
   }
   return ret;
 },
toString:function(){return "LDP modifed";}
}
Encoder.metods.push(IZATOP_metod);

var teststr="Prosto text, prosto text";
var testkey="pass";
var enctest=Encoder.encode(teststr,testkey);
alert(enctest);
var detest=Encoder.decode(enctest,testkey);
alert(detest);
//-->
</script>

Обьект Encoder нужен только для пропуска данных через несколько видов кодирования. Если это не нужно, то пользуемся как имя_метода.{encode|decode}()

Может к вечеру напишу реализацию blowfish, алгоритм старый но надежный.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
IZ@TOP
Дата 26.4.2004, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Ждемс.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
IZ@TOP
Дата 5.5.2004, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Блин, а что это за:
Цитата
IZATOP_metod={
data:{' ':0,'!':1,'"':2,'#':3,'$':4,'%':5,'&':6,'\'':7,'(':8,')':9,'*':10,'+':11,',':12,'-':13,'.':14,'/':15,'0':16,'1':17,'2':18,'3':19,'4':20,'5':21,'6':22,'7':23,'8':24,'9':25,':':26,';':27,'<':28,'=':29,'>':30,'?':31,'@':32,'A':33,'B':34,'C':35,'D':36,'E':37,'F':38,'G':39,'H':40,'I':41,'J':42,'K':43,'L':44,'M':45,'N':46,'O':47,'P':48,'Q':49,'R':50,'S':51,'T':52,'U':53,'V':54,'W':55,'X':56,'Y':57,'Z':58,'[':59,'\\':60,']':61,'^':62,'_':63,'`':64,'a':65,'b':66,'c':67,'d':68,'e':69,'f':70,'g':71,'h':72,'i':73,'j':74,'k':75,'l':76,'m':77,'n':78,'o':79,'p':80,'q':81,'r':82,'s':83,'t':84,'u':85,'v':86,'w':87,'x':88,'y':89,'z':90,'{':91,'|':92,'}':93,'~':94,'\u0401':95,'\u0410':96,'\u0411':97,'\u0412':98,'\u0413':99,'\u0414':100,'\u0415':101,'\u0416':102,'\u0417':103,'\u0418':104,'\u0419':105,'\u041A':106,'\u041B':107,'\u041C':108,'\u041D':109,'\u041E':110,'\u041F':111,'\u0420':112,'\u0421':113,'\u0422':114,'\u0423':115,'\u0424':116,'\u0425':117,'\u0426':118,'\u0427':119,'\u0428':120,'\u0429':121,'\u042A':122,'\u042B':123,'\u042C':124,'\u042D':125,'\u042E':126,'\u042F':127,'\u0430':128,'\u0431':129,'\u0432':130,'\u0433':131,'\u0434':132,'\u0435':133,'\u0436':134,'\u0437':135,'\u0438':136,'\u0439':137,'\u043A':138,'\u043B':139,'\u043C':140,'\u043D':141,'\u043E':142,'\u043F':143,'\u0440':144,'\u0441':145,'\u0442':146,'\u0443':147,'\u0444':148,'\u0445':149,'\u0446':150,'\u0447':151,'\u0448':152,'\u0449':153,'\u044A':154,'\u044B':155,'\u044C':156,'\u044D':157,'\u044E':158,'\u044F':159,'\u0451':160,'\u2116':161},
cdata:[' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','\u0401','\u0410','\u0411','\u0412','\u0413','\u0414','\u0415','\u0416','\u0417','\u0418','\u0419','\u041A','\u041B','\u041C','\u041D','\u041E','\u041F','\u0420','\u0421','\u0422','\u0423','\u0424','\u0425','\u0426','\u0427','\u0428','\u0429','\u042A','\u042B','\u042C','\u042D','\u042E','\u042F','\u0430','\u0431','\u0432','\u0433','\u0434','\u0435','\u0436','\u0437','\u0438','\u0439','\u043A','\u043B','\u043C','\u043D','\u043E','\u043F','\u0440','\u0441','\u0442','\u0443','\u0444','\u0445','\u0446','\u0447','\u0448','\u0449','\u044A','\u044B','\u044C','\u044D','\u044E','\u044F','\u0451','\u2116']

???


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Sardar
Дата 6.5.2004, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



data это хештаблица, а cdata это множество символов используемых в кодировании, как массив представил для наглядности, лучше представить множество как строка и брать символы через метод charAt(index).
Все это что бы скрипт работал быстрее smile.gif

Вот этот метод поинтересней будет, т.к. не зависит множества символов: простой XOR.
Метод режет строку на блоки и XOR'ит их в обратном направлении с ключем.
Код
XOREncryption={
block_length:5,
escape:true,
encrypt: function(indata,key,original,level) {
 var enc="",block,i=0;
 while(i<indata.length) {
  block=indata.substr(i,this.block_length);
  for(var j=block.length-1, k=0; j>=0; j--,k=(k+1)%key.length)
   enc+=String.fromCharCode(block.charCodeAt(j)^key.charCodeAt(k));
  i+=block.length;
 }
 return this.escape? escape(enc): enc;
},
decrypt: function(indata,key,original,level) {
 indata=this.escape? unescape(indata): indata;
 var dec="", encblock="", block, i=0;
 while(i<indata.length) {
  block=indata.substr(i,this.block_length);
  encblock="";
  for(var j=0,k=0; j<block.length; j++, k=(k+1)%key.length)
   encblock=String.fromCharCode(block.charCodeAt(j)^key.charCodeAt(k))+encblock;
  dec+=encblock;
  i+=block.length;
 }
 return dec;
}
}

Данные поступают URLEncoded(%код_символа). Можно убрать использование escape() функции и кодировать символы выше 128 самим(помним о юникоде).

Blowfish надежен, но таблицы преобразований занимают большой обьем(14кб) и с юникодом этот алгоритм не очень дружит. В принципе для второго байта можно повторить все 4 таблицы(все 8 таблиц рандомных данных по моему не допустимый размер), но не уверен что это не подорвет надежности метода. Второй способ: кодировать текст в UTF8->blowfish->url_encode(здесь имеем простой байт(0 - 0хFF), можно применить любой способ кодирования символов >127)

Я так понял что ты хочешь передавать и данные и ключ по сети... этого прикола я не понял. А вообще можно сделать шифрование секретных данных с уникальным паролем пользователя, но для этого редко применяют JS т.к. его вычислительные способности ограниченны(32 битные целые числа).


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1462 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.