MD5

 

Привет!

Есть здесь кто-нибудь, кто знает, как выполнять функции 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!

 

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

 

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.

 

скачайте 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/

 

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

 
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.

 

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

 
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


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

Причина обращения: