Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.11.2009, 07:41
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

шифрование строки по ключу
Доброго времени суток.

Никак не могу найти библиотеку реализующий что-то в роде:
var str = "some string";
var k = "some key";
var tmp = encrypt(str, k);
str == decrypt(tmp, k);

Но мне нужно что бы была реализация на javascript и php. Особых требований к безопасности нет. Вот пример только javascript

Заранее благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 05.11.2009, 07:44
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

Просто, больно не хочется эту мутатень на php переводить
c64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''), l64 = {};
for (i=0; i<64; i++)
l64[c64[i]] = i;

function alphar(s) {
// I only pray--let me be ready.
var i;
// s must contain only base-64 characters!
s = s.replace(/[^0-9A-Za-z+\/]+/g, '');
s = s.split('');
// preparse k into n-series
for (i=0; i<s.length; i++)
s[i] = l64[s[i]];
return s;
}

// circular--acraw(acraw(a, k, r, sec), k, r, sec) == a
function acraw(s, k, r, seed) {
/* seed is a sec feature;
read some papers about non-repeated initializations */
var i;
s = s.split('');
// isn't it thrilling?
for (i=0; i<s.length; i++)
s[i] = c64[l64[s[i]] ^ k[i%k.length] ^ r[i%r.length] ^ seed];
return s.join(''); // yahoo!
}

function alphac(s, k, r, on) { /* encrypt = on | off */
// get read, get set
var d, i; k=alphar(k), r=alphar(r);
// dump empty stuff
if (r.length == 0 || k.length == 0 || s.length == 0) return s;
// split s into bunches of base-64/non-base-64
s = s.match(/[^0-9A-Za-z+\/]+|[0-9A-Za-z+\/]+/g);
i = /[0-9A-Za-z+\/]/.test(s[0]) ? 0 : 1;
// give a 1-2 punch! go!
if (on)
for (; i<s.length; i+=2)
d = c64[Math.floor(Math.random()*64)],
s[i] = acraw(s[i], k, r, l64[d])+d; /* si + d, Sidney Hall */
else
for (; i<s.length; i+=2)
d = s[i].length-1,
s[i] = acraw(s[i].substring(0, d), k, r, l64[s[i].charAt(d)]);
// finished!
return s.join('');
}
Ответить с цитированием
  #3 (permalink)  
Старый 05.11.2009, 09:46
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Разве нет готовых функций в PHP для Base64?
Ответить с цитированием
  #4 (permalink)  
Старый 05.11.2009, 12:46
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

http://javascript.ru/php/base64_encode
http://javascript.ru/php/base64_decode
Ответить с цитированием
  #5 (permalink)  
Старый 05.11.2009, 14:08
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

Ага. То есть вы предлагаете передавать в функцию значение это-го ключа var b64 = "ABCDEFGHIJKLMNOPQRSTUVWX... + строку ?
Ответить с цитированием
  #6 (permalink)  
Старый 05.11.2009, 14:10
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

Я просто в криптографии как рыба на сковородке
Ответить с цитированием
  #7 (permalink)  
Старый 05.11.2009, 14:19
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Это не ключ, и не шифрование. Это base64 алгоритм. Читать тут
Где Вы вообще хотите кодировать? На сервере или на клиенте?
Ответить с цитированием
  #8 (permalink)  
Старый 05.11.2009, 14:22
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

В том то и проблема, что кодировать на сервере а декодировать на стороне клиента. b64 ключ, ось или что там еще. Но я думаю, что можно безопасно поменять последовательность и получить рабочий код генерирующий качественный хеш ?

На всякий случай уточню:

Есть две строки "А" и "Б" . Из них на сервере делаем третью "С".

Клиент получает ее "С" + генерирует определенным образом( это дела не касается) одну из изначальных строк "Б" и на основании этих двух "С" и "Б" восстанавливает третью "А" и передаёт обратно серверу( это то же дела не касается)


PS. Спасибо. сейчас почитаю.

Последний раз редактировалось JAre, 05.11.2009 в 14:31.
Ответить с цитированием
  #9 (permalink)  
Старый 07.11.2009, 04:05
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

Последний вопрос, надеюсь, в этот раз.

Нужно этот код http://javascript.ru/php/base64_encode перевести на php (встроенную функцию не предлагать)
у меня даже имеется часть кода http://www.everfall.com/paste/id.php?tgo9b3r1ay5s
Нужно что бы этот скрипт давал такой же результат как и http://javascript.ru/php/base64_encode

Будем очень благодарны
Ответить с цитированием
  #10 (permalink)  
Старый 07.11.2009, 05:02
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от JAre
Нужно этот код http://javascript.ru/php/base64_encode перевести на php
что именно не получается?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обрезать строку и добавить символы в середине, в зависимости от длинны строки andreyua Firefox/Mozilla 12 10.12.2010 15:44
Как удалить последний символ строки? PAMAC Events/DOM/Window 5 18.10.2009 15:01
Для события onCLick получить индекс строки и объект грида. progi2007 ExtJS 4 05.08.2009 11:31
Подсветка выделенной строки в таблице (row table highlight) artsage Элементы интерфейса 4 03.04.2009 06:40
Разбор строки GRol Общие вопросы Javascript 19 04.03.2009 00:33