Alle Fragen von einem PROFI an einen SUPER PROFI - 1. - Seite 6

 
sergeev:
Ist GetID dynamisch?

Leider ja, da die Parameterwerte dynamisch geändert werden können, muss sich die ID entsprechend ändern.
 

Die einfachste Möglichkeit besteht darin, die gesamte Parameterliste in eine lange Zeichenkette umzuwandeln und MD5. eine kürzere Hash-Funktion für die Zeichenkette zu verwenden.

Dies verleiht Ihnen Einzigartigkeit und Dynamik, wenn sich die Parameter ändern.

 
Ist es möglich, MD5 nur von externen Implementierung (z. B. durch dll) zu nehmen oder gibt es Varianten seiner Implementierung mittels MQL4, MQL5?
 
sergeev:

Sie erhalten Einzigartigkeit, Eindeutigkeit und Dynamik, wenn Sie Parameter ändern.

Es wird keine Einzigartigkeit geben.
Im Allgemeinen wird die Verwendung von Sha256 schon seit langem empfohlen,
weil es einen Algorithmus gibt, der Kennwörter mit dem angegebenen Md5-Wert erzeugt.
C-4:
Ist es möglich, MD5 nur von externen Implementierung (z. B. durch dll) zu nehmen oder gibt es Varianten seiner Implementierung mittels MQL4 oder MQL5?
Sie wissen schon... Wenn Sie nichts Besseres zu tun haben, können Sie es in Mql tun.
 
C-4:
Ist es möglich, MD5 nur von externen Implementierung (z. B. durch dll) zu nehmen oder gibt es Varianten seiner Implementierung mittels MQL4, MQL5?

Ich denke, Sie können den Algorithmus im Netz finden, z.B. hier oder bei wiki.

 
Generell... Das Problem mit Parametern und Bezeichnern ist 1:1 java hashCode / equals.
Alles wird so werden, wie Sie es sich wünschen, wenn Sie es schaffen, alle Parameter in den Identifikator zu packen.
D.h. Hashing-Funktionen werden Ihnen nicht das geben, was Sie wollen...
 
jartmailru:
Es wird keine Einzigartigkeit geben. In der Tat wird seit langem empfohlen, auf Sha256 umzustellen,
denn es wurde ein Algorithmus entwickelt, der ein Passwort mit einem bestimmten Md5-Wert erzeugt.

Was haben Passwörter damit zu tun? :))) sprechen wir über einen Klassenbezeichner, der spontan erstellt wird und für verschiedene Parameter unterschiedlich ist.

----------

Und überhaupt, C-4, dachte ich, wenn sowieso eine Kette von Parametern erstellt wird, wozu dann überhaupt dieser Hash? :)

Vergleichen Sie einfach die beiden Strings.

 
sergeev:

Was hat das Passwort damit zu tun? :))) sprechen wir von einem bestimmten Klassenbezeichner, der spontan erstellt wird und für verschiedene Parameter unterschiedlich ist.

Die Quintessenz meiner Antwort:
1) Md5 gibt keine eindeutige Kennung
1.1) Hashing-Funktionen können für diese Aufgabe nicht verwendet werden
2) Md5- nicht modisch
Ja, Sie brauchen nur einen Vergleich. Alles in ein Array und dann eine binäre Suche:-).
P.S.: Und in C++ muss man dafür nicht einmal Code schreiben...
 


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

Krypto-Proofing ist nicht erforderlich, um das Problem zu lösen. Alles, was zählt, ist die Erstellung eines einzigartigen Fingerabdrucks. Leider ist MD5 ein 128-Bit-Hash-Code. In MQL gibt es keine Variablentypen mit dieser Länge. Also werde ich wahrscheinlich einen viel einfacheren Adler-32 darauf implementieren und ihn zu einem Generator für eine eindeutige 32-Bit-ID-Nummer für jede der Klasseninstanzen machen.

s.w. Wenn Sie den Punkt 1.1. näher erläutern könnten. Warum kann das nicht gemacht werden?

 
jartmailru:

Ja, Sie brauchen nur einen Vergleich. Alles in ein Array und dann eine binäre Suche :-).

Ja, in diesem Fall können wir auf die Raute verzichten.

Wenn diese Variante zu Vasily passt, fügen wir einfach alle Parameter in eine Zeichenkette ein. Die Zeichenkette ist der Klassenbezeichner.