In meiner Benutzerdatenbanktabelle nehme ich den MD5-Hash der E-Mail-Adresse eines Benutzers als ID.MD5-Hash als Ganzzahl darstellen
Beispiel: email([email protected]) = id(d41d8cd98f00b204e9800998ecf8427e)
Leider habe ich jetzt die IDs als ganzzahlige Werte darzustellen - um in der Lage sein, eine API zu verwenden, wo die ID nur eine ganze Zahl sein kann.
Jetzt bin ich auf der Suche nach einer Möglichkeit, die ID in eine ganze Zahl zu kodieren, um sie beim Empfang erneut zu entschlüsseln. Wie könnte ich das tun?
Meine Ideen so weit:
convert_uuencode()
undconvert_uudecode()
für den MD5-Hash- jedes Zeichen des MD5-Hash von seinem
ord()
Wert
ersetzen Welcher Ansatz ist besser? Weißt du noch bessere Möglichkeiten, dies zu tun?
Ich hoffe, Sie können mir helfen. Vielen Dank im Voraus!
Haben Sie keinen anderen, möglicherweise intern, Wert um Ihre Nutzer zu identifizieren? Nun, Sie sollten mindestens eine PK für Ihre Benutzertabelle haben. – Malax
@Malax: Ja, der Primärschlüssel ist das ID-Feld, das den MD5-Hash enthält. Ist das eine schlechte Lösung? – caw
Die Verwendung eines MD5-Hashs als Primärschlüssel Ihrer Benutzertabelle ist im Allgemeinen keine gute Idee. Eine Auto-Inkrement/Serien-Integer-ID ist 4-8 Bytes. Ein MD5-Hash ist 32 Bytes. Vergleiche mit ganzzahligen Werten (z.Jedes Mal, wenn Sie an dieser Tabelle JOIN oder SELECT eine Zeile von ihm) wird viel schneller als der Vergleich von 32 Byte Strings sein, und Integer-Werte benötigen weniger Speicherplatz. Und wirklich ... wenn Sie einen String-Wert verwenden möchten, warum nicht die E-Mail-Adresse selbst verwenden? Es wird die meiste Zeit 32 Bytes oder weniger sein. –