Любые вопросы от ПРОФИ к СУПЕРПРОФИ - 1. - страница 6

 
sergeev:
GetID - динамический?

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

самый простой вариант - преобразовывайте весь список параметров в одну длинную строку и берите MD5. короче хеш функцию для строки.

будет вам и уникальность и однозначность и динамичность при изменении параметров.

 
MD5 можно взять только из внешней реализации (например через dll) или есть варианты ее реализации средствами MQL4, MQL5?
 
sergeev:

будет вам и уникальность и однозначность и динамичность при изменении параметров.

Уникальности не будет.
И вообще уже давно рекомендуют переходить на Sha256,
потому что создан алгоритм, генерирующий пароль с заданным Md5.
C-4:
MD5 можно взять только из внешней реализации (например через dll) или есть варианты ее реализации средствами MQL4, MQL5?
Знаете... если вам делать нечего- конечно, сделайте на Mql.
 
C-4:
MD5 можно взять только из внешней реализации (например через dll) или есть варианты ее реализации средствами MQL4, MQL5?

думаю что алгоритм в сети найдете. вот например. или вики

 
А вообще... эа вот задача с параметрами и идентификатором- это 1:1 джавский hashCode / equals.
Все получится как хочется, только если удастся в идентификатор запаковать все параметры.
Т.е. функции хэширования того, что хочется- не дадут...
 
jartmailru:
Уникальности не будет. И вообще уже давно рекомендуют переходить на Sha256,
потому что создан алгоритм, генерирующий пароль с заданным Md5.

при чем здесь пароль. :))) мы говорим про некий идентификатора класса, который создается на лету и разный при разных параметрах .

----------

А вообще, C-4, я так подумал, если уж все равно будется создаваться строка параметров, то зачем этот хеш вообще. :)

Просто сравните две строки.

 
sergeev:

при чем здесь пароль. :))) мы говорим про некий идентификатора класса, который создается на лету и разный при разных параметрах .

Суть моего ответа:
1) Md5 не даст уникального идентификатора
1.1) функции хэширования для задачи использовать нельзя
2) Md5- не модно
Да, нужно просто сравнение. Всех- в массив- а потом бинарный поиск :-).
P.S.: а в С++ для этого даже код писать не нужно...
 


Уникальности не будет.
И вообще уже давно рекомендуют переходить на Sha256,
потому что создан алгоритм, генерирующий пароль с заданным Md5.

Для решения задачи криптостойкость не требуется. Важно лишь создать уникальный отпечаток. К "сожалению" MD5 - 128 битный hash-код. В MQL нет типов переменных такой длинны. Поэтому я наверное реализую на нем гораздо более простой Adler-32 и сделаю его генератором уникального 32 битного ID номера для каждого из экземпляров класса.

з.ы. если можно по-подробнее про пункт 1.1. Почему собственно нельзя?

 
jartmailru:

Да, нужно просто сравнение. Всех- в массив- а потом бинарный поиск :-).

Да. в данном случае без хеша обойтись можно.

Если такой вариант Василия устроит - то просто загоняем в строку все параметры. Строка и будет являться идентификатором класса.

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