Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2009, 16:13   #1
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
Печаль Аогоритм расшифровки

Доброго времени суток дорогие коллеги!

И сразу от слов к делу:
Есть некий алгоритм шифрования строки написанный на JavaScript, моя задача состоит в том чтобы написать такой же алгоритм только уже на Delphi.

JavaScript
Код:

function coder(text)
 {
  var str = '';
  for (i = 0; i < text.length; i++) //запускаем цикл 
   {
    // Возвращает кодировку Unicode i-ого символа
    var c = text.charCodeAt(i);
    
    //далее идет генерация ключа (поясню значение операторов)
    // | - Побитовый ИЛИ   
    // << - Побитовый  сдвиг в лево
    // >> - Побитовый  сдвиг в право
  
    var key = 12122 | (i << 3) | (51029 >> 2);

    // ^ -Исключающее побитое ИЛИ

    c = c^key;
    
    //возвращает  Unicode символ 
    str+= String.fromCharCode(c);
   }

 }
Так можно предложить другое решение: Выполнятьскрипт в браузере но вернуть результат этой функции в Delphi.

Если у кого нибудь есть хоть какие нибудь сообжания по этому поводу, то прошу вас помогите... для меня будт важен каждый ваш отзыв.

Спасибо.
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Старый 04.09.2009, 16:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
var key = 12122 | (i << 3) | (51029 >> 2);
Код:
Key:=12122 or (i shl 3) or (51029 shr 2)
c:=c xor key
Остальное, надеюсь, сам допишешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.09.2009, 17:36   #3
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию

Спасибо большой...
а не мог бы ты подсказать как интерпретировать в Object Pascal вот эти места
Код:
c = text.charCodeAt(i);
и
Код:
str+= String.fromCharCode(c);
этот моменты для меня были самыми непонятными
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.

Последний раз редактировалось Phantom; 04.09.2009 в 17:46.
Phantom вне форума Ответить с цитированием
Старый 04.09.2009, 18:01   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Будет что-то типа такого:

Код:
function coder(text:string):string;
var
str:string;
i:integer;
c:integer;
key:integer;
begin
str:='';
  for i:=0 to length(text)-1 do
   begin
    c := integer(widechar(text[i]));
    key:=122 or (i shl 3) or (51029 shr 2);
    c := c xor key;
    str:=str+String(c);
   end;
result:=str;
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 04.09.2009, 18:35   #5
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию

Уже готов был обрадоваться и целовать ноги russian-stalker'а... но...

При выполнении данной функции возникает ошибка.

То есть синтаксических ошибок нет, а вот логические есть...

Я в данной облости программирования новичек поэтому для меня перевод текста в юникод и другие побитные смещения темный непроглядный лес...

Помогите разобраться с этой функцией
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Старый 04.09.2009, 21:42   #6
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
function coder(text:string):string;
var
str:string;
i:integer;
c:integer;
key:integer;
begin
str:='';
  for i:=1 to length(text) do
   begin
    c := integer(widechar(text[i]));
    showmessage(inttostr(c));
    key:=122 or (i shl 3) or (51029 shr 2);
    c := c xor key;
    str:=str+widechar(c);
   end;
result:=str;
end;
Значит где-то так.
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 04.09.2009 в 21:45.
russian-stalker вне форума Ответить с цитированием
Старый 07.09.2009, 10:42   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
c = text.charCodeAt(i);
Видимо c:=ord(str[i]);
Цитата:
str+= String.fromCharCode(c);
ну тут str:=str+chr(c);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.09.2009, 09:24   #8
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию

Спасибо большое за помощь...

Вот именно за оперативность и грамотность уважаю этот форум )
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение пароля для расшифровки Lime Общие вопросы Delphi 25 01.03.2009 19:57
Программа для расшифровки штрихкода Sanek777 Софт 5 27.10.2008 21:41