Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.01.2013, 12:57
Аватар для seeman_tm
seeman_tm seeman_tm вне форума
Новичок
 
Регистрация: 03.02.2011
Сообщения: 79
Репутация: -2306
По умолчанию Что делает 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  
Старый 24.01.2013, 13:00
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

никаких комментариев к нему не было?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
  #3  
Старый 24.01.2013, 13:01
OTVET2 OTVET2 вне форума
Прохожий
 
Регистрация: 29.11.2012
Адрес: http://crprogram.16mb.com
Сообщения: 9
Репутация: выкл
По умолчанию

Код:
generatecode(z)
генерирует код.

Ваш КО

А судя по коду - вычисляет SHA-1 или его модификацию.

Последний раз редактировалось OTVET2, 24.01.2013 в 13:06.
  #4  
Старый 24.01.2013, 13:29
Аватар для seeman_tm
seeman_tm seeman_tm вне форума
Новичок
 
Регистрация: 03.02.2011
Сообщения: 79
Репутация: -2306
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
никаких комментариев к нему не было?
Комментов не было, да и вообще он был в одну сплошную строчку, это уже я предал ему нынешний вид.
  #5  
Старый 24.01.2013, 13:29
Аватар для seeman_tm
seeman_tm seeman_tm вне форума
Новичок
 
Регистрация: 03.02.2011
Сообщения: 79
Репутация: -2306
По умолчанию

Цитата:
Сообщение от OTVET2
Код:
generatecode(z)
генерирует код.

Ваш КО

А судя по коду - вычисляет SHA-1 или его модификацию.
Да да, именно он, и именно модификация. И надо именно этот скрипт реализовать на делфи.

Последний раз редактировалось seeman_tm, 24.01.2013 в 13:32.
  #6  
Старый 24.01.2013, 13:53
OTVET2 OTVET2 вне форума
Прохожий
 
Регистрация: 29.11.2012
Адрес: http://crprogram.16mb.com
Сообщения: 9
Репутация: выкл
По умолчанию

Цитата:
Сообщение от seeman_tm
Да да, именно он, и именно модификация. И надо именно этот скрипт реализовать на делфи.
Тогда правильно задавайте вопрос:
а именно:
перевести с javascript на Delphi.
  #7  
Старый 24.01.2013, 14:01
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а зачем его на Delphi переписывать? используй IScriptControl для вычисления результата функции generatecode()
__________________
Пишу программы за еду.
__________________
  #8  
Старый 24.01.2013, 14:12
Аватар для seeman_tm
seeman_tm seeman_tm вне форума
Новичок
 
Регистрация: 03.02.2011
Сообщения: 79
Репутация: -2306
По умолчанию

Цитата:
Сообщение от NumLock
а зачем его на Delphi переписывать? используй IScriptControl для вычисления результата функции generatecode()

Возможно этот модуль и не плох, но зачем надо тащить посторонний код в делфи, когда можно его реализовать полностью поддерживаемыми методами ?
  #9  
Старый 24.01.2013, 14:32
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Смех

ну... зато уже программа работала бы
__________________
Пишу программы за еду.
__________________
  #10  
Старый 26.01.2013, 16:59
Аватар для seeman_tm
seeman_tm seeman_tm вне форума
Новичок
 
Регистрация: 03.02.2011
Сообщения: 79
Репутация: -2306
По умолчанию

Всё благодарю за отсутствие помощи.
Скрип я полностью переписал на Delphi и засунул в ддлину.
Всего то убил порядка 7 часов.
Тему можно закрыть.
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter