Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Eindeutiges Textfeld in MySQL und PHP

Für ein Salz ist Einzigartigkeit wichtiger als Länge und Vorhersagbarkeit. Sie gehen davon aus, dass der Angreifer das Salt hat.

Ein universell eindeutiger Bezeichner (UUID) wäre am besten, und es gibt Beispiele, die universell eindeutige Bezeichner auf der Doc-Seite für php uniqueid() Funktion. Eine UUID hat gegenüber einer zufälligen Zeichenfolge den Vorteil, dass sie für Menschen lesbar ist und eine feste Länge hat. Daher können Sie sie in einem Varchar-Feld speichern und einen eindeutigen Index verwenden, um sicherzustellen, dass es niemals Duplikate gibt.

Das Hashen der Zeit mit MD5 ist eine gängige Methode, um eindeutige Werte zu generieren, da sie eine feste Länge hat und für Menschen lesbar ist. Es ist jedoch sinnvoller, einfach eine zufällige Zeichenfolge mit fester Länge zu generieren und sie selbst in Hex zu codieren. Hashes sind nicht so sehr auf Eindeutigkeit ausgelegt, sondern darauf ausgelegt, nicht umkehrbar zu sein. Die Verwendung einer Hash-Funktion garantiert Kollisionen, obwohl es mit SHA1 weniger Kollisionen als mit MD5 gibt.

Die Länge des Salzes ist wirklich nur ein Faktor, denn je länger das Salz ist, desto wahrscheinlicher ist es, dass es universell einzigartig ist.