Скачать MetaTrader 5

MD5

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай самые обсуждаемые темы на форуме. Заходи в раздел Стена!
Josh
62
Josh 2008.11.02 01:53 

Привет!

Есть здесь кто-нибудь, кто знает, как выполнять функции md5 для ЕА? Я думаю вариант будет использовать C библиотеки. Но как получить эту библиотеку, работающих в mql4?


На форуме здесь, я нашел эту ссылку: https://forum.mql4.com/10868, но это только ссылки на различные библиотеки с использованием md5 функции.


Большое спасибо!



Hi!

Is here someone who knows how to implement a md5 function for an EA? I think an option will be using a C Library. But how to get this library working in mql4?


On the forum here i found this link : 'how to use mql4 create a function MD5' but this is just a reference to different librarys using md5 functions.


Thank you very much!

Avals
3159
Avals 2008.11.02 07:06  

MD5 вроде запускается как консольное приложение. Тогда его можно запустить с помощью ShellExecuteA https://www.mql5.com/ru/forum/106619

Результат выполнения прочитать из файла https://www.mql5.com/ru/forum/100532

А можно проще - есть DLL для MD5 aamd532.dll . Импортировать функции MDStringFix, MDFile и вызывать их из MT Пример http://www.mombu.com/programming/php/t-md5-1355823.html

Josh
62
Josh 2008.11.02 18:32  

Translated with Google:


Большое спасибо Avals. Однако я никогда не использовал DLL раньше. Так что если я хочу использовать aamd532.dll, как мне это сделать?


Ведения aamd532.dll говорит:


FUNCTION RKF_MD5String ( cString AS STRING ) AS STRING PASCAL

LOCAL cToReceive AS STRING
LOCAL liLenght AS LONG

~"ONLYEARLY+"

cToReceive:=Space(SLen(cString))
liLenght:= LONG(_CAST,SLen(cString))

MDStringFix ( cString, liLenght,cToReceive )
RETURN Upper(cToReceive)

~"ONLYEARLY-"


Так может я призываю Функция RKF_MD5String от ЕА? Как я должен это сделать? Я хочу, чтобы создать MD5 хеш.


Спасибо за вашу помощь Avals.




Thank you very much Avals. However i never used a DLL before. So if i want to use the aamd532.dll, how do i do this?


The reference of the aamd532.dll says:


FUNCTION RKF_MD5String ( cString AS STRING ) AS STRING PASCAL

LOCAL cToReceive AS STRING
LOCAL liLenght AS LONG

~"ONLYEARLY+"

cToReceive:=Space(SLen(cString))
liLenght:= LONG(_CAST,SLen(cString))

MDStringFix ( cString, liLenght,cToReceive )
RETURN Upper(cToReceive)

~"ONLYEARLY-"


So can i call the Function RKF_MD5String from the EA? How should i do this? I want to generate a MD5 hash.


Thank you for your help Avals.

Avals
3159
Avals 2008.11.03 09:07  

скачайте aamd532.dll http://www.dll.ru/dll/878.html в папку ....\experts\libraries

разрешите импорт DLL: Сервис->Настройки->Советники->Разрешить импорт DLL

В папку ...\experts\scripts поместите скрипт:

#property show_inputs

#import "aamd532.dll"
   void MDFile (string f,int & r[]); 
   void MDStringFix (string f,int t,int & r[]);

extern string file="D:\Program Files\MetaTrader - North Finance\experts\libraries\aamd532.dll";

int start()
{
  string hash="";
  int result[64]; 
   
  MDFile (file,result);  
  
  for (int i=0; i<ArraySize(result); i++) 
      hash=hash + CharToStr(result[i]     & 0x000000FF) + CharToStr(result[i]>> 8 & 0x000000FF) + CharToStr(result[i]>>16 & 0x000000FF) + CharToStr(result[i]>>24 & 0x000000FF);
   
  Print(hash);
  return(0);
}

Это пример,печатающий хэш для файла (путь задается переменной "file"). Для строки аналогично: MDStringFix (file,StringLen(file),result); (будет хеш для строки file)

Правильность работы можно сравнитьс с http://www.hash-calculator.com/ru/

Josh
62
Josh 2008.11.03 11:04  

Translated with Google


Аваль спасибо!! Она работает! Большое спасибо.


Я только еще один вопрос. Почему мы нуждаемся в массиве результат [64] с 64 длиной?


Спасибо, и считает



Aval thanks!! It works! Many thanks.


I have just one more question. Why do we need the array result[64] with 64 length?


Thank you and regards

Avals
3159
Avals 2008.11.03 13:22  
JT2008 писал(а) >>

Translated with Google

Аваль спасибо!! Она работает! Большое спасибо.


Я только еще один вопрос. Почему мы нуждаемся в массиве результат [64] с 64 длиной?


Спасибо, и считает

Aval thanks!! It works! Many thanks.

I have just one more question. Why do we need the array result[64] with 64 length?

Thank you and regards

Потому что максимальный размер строки 255 символов + 1байт(длина). 255 x 1байт + 1байт= 256байт.

int[64]=4байта x 64=256 байт

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

Можно было объявить пустую строку длиной 255.

Josh
62
Josh 2008.11.03 15:48  

Translated witg Google


Ok Avals сейчас очевидно, еще раз спасибо за вашу помощь.


ftp://ftp.rfc-editor.org/in-notes/rfc1321.txt


Привет




Ok Avals now it is clear thanks again for your help.


ftp://ftp.rfc-editor.org/in-notes/rfc1321.txt


Regards

Dinar
30
Dinar 2014.04.12 14:23  
Avals:

скачайте aamd532.dll http://www.dll.ru/dll/878.html в папку ....\experts\libraries

разрешите импорт DLL: Сервис->Настройки->Советники->Разрешить импорт DLL

В папку ...\experts\scripts поместите скрипт:

Это пример,печатающий хэш для файла (путь задается переменной "file"). Для строки аналогично: MDStringFix (file,StringLen(file),result); (будет хеш для строки file)

Правильность работы можно сравнитьс с http://www.hash-calculator.com/ru/


К сожалению, ваш вариант считает хэш неверно. Я не знаю в чем проблема.

Но вот пример.

Хэширую строку "hello"

Хэш по калькулятору:

5d41402abc4b2a76b9719d911017c592

Хэш по скрипту:

8d11aa0625ce42cfe9429d5e93b5ab0a


Совершенно разные. В чем же ошибка?

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий