|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Что делает JavaScript
Доброго времени суток.
Имеется скрипт на языке JavaScript. Прошу помощи в написании точного аналога на Delphi. Сам скрипт вот. Код:
function generatecode(z){ function A(i){ function o(j,b){var c=(j<<b)|(j>>>(32-b));return c }; function C(j){ var b=""; var c; var e; var x; for(c=0;c<=6;c+=2){ e=(j>>>(c*4+4))&0x0f; x=(j>>>(c*4))&0x0f; b+=e.toString(16)+x.toString(16) } return b};function q(j){ var b="";var c;var e;for(c=7;c>=0;c--){ e=(j>>>(c*4))&0x0f; b+=e.toString(16) } return b }; function B(j){ j=j.replace(/\r\n/g,"\n"); var b=""; for(var c=0;c<j.length;c++){ var e=j.charCodeAt(c); if(e<128){ b+=String.fromCharCode(e) } else if((e>127)&&(e<2048)){ b+=String.fromCharCode((e>>6)|192); b+=String.fromCharCode((e&63)|128) } else { b+=String.fromCharCode((e>>12)|224); b+=String.fromCharCode(((e>>6)&63)|128); b+=String.fromCharCode((e&63)|128)} }return b }; var r; var a,y; var k=new Array(80); var s=0x67452301; var t=0xEFCDAB89; var u=0x98BADCFE; var v=0x10325476; var w=0xC3D2E1F0; var h,d,f,g,l; var m;i=B(i); var n=i.length; var p=new Array(); for(a=0;a<n-3;a+=4){ y=i.charCodeAt(a)<<24|i.charCodeAt(a+1)<<16|i.charCodeAt(a+2)<<8|i.charCodeAt(a+3); p.push(y)} switch(n%4){ case 0:a=0x080000000; break; case 1:a=i.charCodeAt(n-1)<<24|0x0800000; break; case 2:a=i.charCodeAt(n-2)<<24|i.charCodeAt(n-1)<<16|0x08000; break; case 3:a=i.charCodeAt(n-3)<<24|i.charCodeAt(n-2)<<16|i.charCodeAt(n-1)<<8|0x80; break } p.push(a); while((p.length%16)!=14)p.push(0); p.push(n>>>29); p.push((n<<3)&0x0ffffffff); for(r=0;r<p.length;r+=16){ for(a=0;a<16;a++)k[a]=p[r+a]; for(a=16;a<=79;a++)k[a]=o(k[a-3]^k[a-8]^k[a-14]^k[a-16],1); h=s; d=t; f=u; g=v; l=w; for(a=0;a<=19;a++){ m=(o(h,5)+((d&f)|(~d&g))+l+k[a]+0x5A827999)&0x0ffffffff; l=g; g=f; f=o(d,30); d=h;h=m } for(a=20;a<=39;a++){ m=(o(h,5)+(d^f^g)+l+k[a]+0x6ED9EBA1)&0x0ffffffff; l=g; g=f; f=o(d,30); d=h; h=m } for(a=40;a<=59;a++){ m=(o(h,5)+((d&f)|(d&g)|(f&g))+l+k[a]+0x8F1BBCDC)&0x0ffffffff; l=g; g=f; f=o(d,30); d=h; h=m } for(a=60;a<=79;a++){ m=(o(h,5)+(d^f^g)+l+k[a]+0xCA62C1D6)&0x0ffffffff; l=g; g=f; f=o(d,30); d=h; h=m } s=(s+h)&0x0ffffffff; t=(t+d)&0x0ffffffff; u=(u+f)&0x0ffffffff; v=(v+g)&0x0ffffffff; w=(w+l)&0x0ffffffff } var m=q(s)+q(t)+q(u)+q(v)+q(w); return m.toLowerCase() } return A("uzen"+z+"sfdhjsfdjk")} |
#2
|
||||
|
||||
никаких комментариев к нему не было?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Код:
generatecode(z) Ваш КО А судя по коду - вычисляет SHA-1 или его модификацию. Последний раз редактировалось OTVET2, 24.01.2013 в 13:06. |
#4
|
||||
|
||||
Цитата:
|
#5
|
||||
|
||||
Цитата:
Последний раз редактировалось seeman_tm, 24.01.2013 в 13:32. |
#6
|
|||
|
|||
Цитата:
а именно: перевести с javascript на Delphi. |
#7
|
||||
|
||||
а зачем его на Delphi переписывать? используй IScriptControl для вычисления результата функции generatecode()
Пишу программы за еду. __________________ |
#8
|
||||
|
||||
Цитата:
Возможно этот модуль и не плох, но зачем надо тащить посторонний код в делфи, когда можно его реализовать полностью поддерживаемыми методами ? |
#9
|
||||
|
||||
ну... зато уже программа работала бы
Пишу программы за еду. __________________ |
#10
|
||||
|
||||
Всё благодарю за отсутствие помощи.
Скрип я полностью переписал на Delphi и засунул в ддлину. Всего то убил порядка 7 часов. Тему можно закрыть. |