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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vasiliy Sokolov
41657
Vasiliy Sokolov  
sergeev:
GetID - динамический?

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

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

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

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

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

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

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

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

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

----------

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

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

Андрей
1890
Андрей  
sergeev:

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

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


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

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

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

---
22669
---  
jartmailru:

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

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

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

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