Dreht man einen integer random string und wieder zurück
was ich will ist das konvertieren von einem integer in einen string. Zum Beispiel 123456789 werden kann 8GFsah93r ... Sie wissen, wie Youtube, Pastebin und was nicht. Dann möchte ich es zu konvertieren zurück.
Ich arbeite mit großen zahlen, zum Beispiel: 131569877435989900
Werfen Sie einen Blick auf diesen link: http://codepad.viper-7.com/wHKOMi
Dies ist mein Versuch, eine Funktion verwenden, die ich im Internet gefunden habe, natürlich... es ist nicht richtig konvertieren zurück zu integer. Ich bin etwas brauchen, das dies tut, fest.
Dank
- Warum wollen Sie dies tun? Es klingt sinnlos.
- Kürzere urls... vielleicht?
- Ist dies, weil Sie nur wollen, um fit die ganze Zahl in einen kleineren Raum, oder verwenden Sie diese als Sicherheit?
- So schneiden nach unten ein, sagen wir, 20-stellige Nummer eine 10-stellige Zeichenfolge macht für dich einen Unterschied? Es ist nicht hand-Art-freundlich oder so, und kopieren/einfügen funktioniert genau so gut mit 10 chars mehr.
- site.com/1234567891234567890123456789 ... muss zugeben, es sieht ziemlich schrecklich. Ich don ' T Pflege wenn Sie denken, es ist sinnlos, Fakt ist - ich will es tun, und ich brauche Hilfe.
- Base36 (A-Z0-9) ist die gängige Art und Weise verwendet werden, die durch Dienste; 131569877435989900 -> zzhmn9ztjm8
- OK, es ist deine app, rufen Sie die Aufnahmen. Ich 've Hinzugefügt eine Antwort, dass Sie werden Sie hoffentlich ausreichend.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, eine der Ideen ist es, ein Zeichen-array als Darstellung eines numerischen Systems. Dann können Sie konvertieren von Basis 10 zu Basis x und Vice-versa. Der Wert wird kürzer und weniger lesbar (altought, sollten Sie verschlüsseln es mit einem zwei-Wege-crypter, wenn es sicher sein muss).
Lösung:
Dann können Sie verwenden:
BEARBEITEN
mit großen zahlen, es funktioniert nicht. Sie sollten diese version (mit bcmath http://www.php.net/manual/en/book.bc.php ) mit sehr großen zahlen:
Wenn etwas fehlt, lassen Sie es mich wissen, denn es ist nur ein Ausschnitt aus meiner Bibliothek (ich weiß nicht, wanna stecken die ganze Sache hier)
negra
überprüfen Sie die base64-Codierung: http://php.net/manual/en/function.base64-encode.php http://php.net/manual/en/function.base64-decode.php
Wenn Sie eine kürzere Zeichenfolge ersten Kodieren Sie es in ein 8bit string dann codieren. Sie können dies tun, mit
% 256
und/256
.Oder Sie können manuell tun, was base64 macht, erhalten die ersten 6bits und Kodieren Sie es in einen char.
=
um etwas anderes.Warum nicht so etwas? Sie benötigen es, stark verschlüsselt?
Ich denke, was Sie wollen, ist zu codieren, die ids mit Base32. Der resultierende string enthält nur die 26 Buchstaben des Alphabets und die Ziffern 2-7, so dass es sehr lesbar.
Einfachsten wäre die Verwendung von etwas wie
base_convert
-- leider funktioniert es nicht für so große zahlen richtig.Allerdings können Sie mit der gleichen Idee durch kopieren
base_convert_arbitrary
aus meiner Antwort hier und tun:Sehen Sie es in Aktion.
Das schöne an diesem Ansatz ist, dass Sie können zwicken die erste Zeile in der Funktion, die da lautet:
Fügen Sie alle anderen "Ziffern", die Sie akzeptabel finden (z.B. Kapital-Buchstaben oder andere Symbole, die Sie nichts dagegen haben, dass in der URL). Sie können dann ersetzen Sie die Basis
36
im obigen Beispiel, mit einem größeren (Sie kann so hoch sein, wie es den vorgegebenen Ziffern), und es wird einfach funktionieren, wie Sie es wollen.Sehen Sie hier das arbeiten mit Ziffern 62.
Ich bin überrascht, niemand ist zu erwähnen, base64_encode() und it-partner base64_decode().
Wenn Sie waren nicht in Anbetracht der Länge dieser ist perfekt,
Gehe ich immer für die einfachsten Lösungen, solange Sie nicht gefährden meine Sicherheit.
Der einfachste Weg, um zufällige Zeichenfolge ist die Verwendung von hash-Funktionen, wie
md5()
odersha1()
Zum Beispiel:Diese hash-Funktionen sind irreversibel-Sie können nicht Holen Sie sich den originalen Wert(diese Funktionen werden auch benutzt, um crypt-Daten). Wenn Sie möchten, können Sie speichern Sie die original big integer in ein array oder eine Datenbank. Aber decripting der hash wäre unmöglich.