verschleiern oder verschlüsseln einige nur-text-Daten in PHP
Brauche ich, um zu verschleiern oder verschlüsseln einige nur-text-Daten in mein php 5.2 Anwendung.
Ich würde es vorziehen, eine Lösung, die hätten input string und output-string behalten die gleiche Länge.
Diese muss nicht extrem stark, da gibt es zahlreiche andere Schichten der Sicherheit im Ort. Starke wäre gut, aber dies wird nur halten Programmierer/dba/Unterstützung von Menschen/etc versehentlich Lesen Sie den text aus der Datenbank.
wichtige überlegungen
- BEARBEITEN HINZUFÜGEN ich würde es vorziehen, eine Lösung, die hätten input string und output-string behalten die gleiche Länge.
- nur string text wird verschleiert/verschlüsselt für die Speicherung in einer Datenbank
- die php-Anwendung benötigen, um zu verschleiern/verschlüsseln Sie die Daten, bevor das speichern der Datenbank und müssen un-verschleiern/dencrypt folgenden der Datenbank Lesen
- dies ist eine änderung an einer vorhandenen Anwendung
- nur einige Spalten müssen verschleiert/verschlüsselt
- nur einige Zeilen müssen verschleiert/verschlüsselt, basierend auf einem Type-Feld
- es gibt nur ein paar laden/speichern Punkte zu behandeln
- max-Spalte die Größe ist bereits bestimmt für einige Felder, aber nicht für andere, aber ich bevorzuge eine Lösung innerhalb der bestehenden Größe der Felder beschränkt
- BEARBEITEN, HINZUFÜGEN der Schlüssel wird sein, wahrscheinlich eine Zusammensetzung einige Primärschlüssel info +unveränderbare Felder
hier ist ein Beispiel-Datenbank-Tabelle und Daten:
int char(1) varchar(24) int date
MyPrimaryKey RowType UserText UserNo DateChange
------------ ------- ------------------------ -------- ----------------
1 N nothing special here 43 6/20/2009 12:11am
2 N same thing, wow! 78 6/23/2009 1:03pm
3 S fBJKg}.jkjWfF78dlg@45kjg 43 6/25/2009 6:45am
4 N same old, same old text 21 6/25/2009 8:11am
Würde die Anwendung laden und anzeigen von Zeilen 1,2 und 4 in der Regel. Allerdings wäre es bedingt (basierend auf den row-Typ) Griff den text in der Zeile 3 mit diesem verschleiern/verschlüsseln und un-verschleiern/entschlüsseln Logik.
Kann jemand liefern verschleiern/verschlüsseln und un-verschleiern/decrypt Funktionen, code, links, und oder Zeiger, die helfen würde, hier?
Dank!
BEARBEITEN
Ich mag das einfache base64-Codierung Idee, aber gibt es eine Methode, damit die Daten innerhalb einer festen Größe. Alle aufgeführten Methoden haben sich bisher der Ausgangswert größer als der Eingangswert. Dies wird ein problem sein für einige Spalten, wo der Benutzer eingeben kann in 50 Zeichen lang sein und es ist gespeichert in einem varchar(50) Spalte.
M., die gegeben Anforderungen für dieses Projekt sind, speichern Sie diese als Klartext in der Datenbank, und beschränken Benutzer Zugriff darauf über die Anwendung. Ich werde darüber hinaus gehen, mit einem minimalen/einfache verschleiern/verschlüsseln-Funktion, da ich nicht wollen, zu "sehen" die Daten, wenn ich auf dem system arbeiten. Mit vollem Zugriff auf source-code einer der anderen Entwickler werden in der Lage sein, um herauszufinden, wie es kodiert wird, und Sie können, wenn Sie wollen, aber Sie wollen wahrscheinlich nicht zu. Wenn Sie das tun, dann kein grosses problem, wir sind nicht die Speicherung von top-secret-Daten.
Wenn Sie nicht Vertrauen können, die Menschen, die haben direkten Zugang zu Ihren Systemen & deine DB muss man entweder restriktiver sein, wer von Ihnen auf die Systeme oder verschiedene Menschen.
McSomething, ich will nicht, um die Daten zu sehen, wenn ich auf dem system arbeiten, und ich traue mich.
Brauchen Sie die Lösung einfach sein, un-lesbar oder un-hackable.
InformationsquelleAutor KM. | 2009-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
für einfache Verschleierung verwenden strtr() - Übersetzen bestimmte Zeichen:
string strtr ( string $str , string $from , string $to )
Kodieren php:
zu entschlüsseln in php:
können Sie leicht replizieren diese Logik in die DB, wenn nötig (ohne Schlaufe): Mit Hilfe einer Tabelle von Zahlen, von Erland Sommarskog
Wie kamst du auf oder generieren Sie die Zeichenfolgen, die Sie verwenden oben. rot13 sieht einfacher ist, warum die zusätzliche Komplexität?
aus dem Handbuch: Die ROT13-Kodierung verschiebt jeden Buchstaben um 13 stellen im alphabet beim verlassen nicht-alpha-Zeichen unberührt. - Kodierung und-Dekodierung erfolgt mit der gleichen Funktion die übergabe eines codierten string als argument wird wieder der ursprünglichen version. das war nicht viel härter, aber es macht es viel schwieriger zu bekommen jede info aus der codierte string.
Ja, ich weiß. Was ich mich Frage ist wie hast du das generieren von zwei strings. Ich bin zu faul zu zählen, aber es sieht aus wie Sie nahm ASCI (256 Zeichen) und verlagert 128 Zeichen
probabily so etwas wie, dass, wenn Sie eine zahlen-Tabelle, es ist einfach mit CHAR, etwas auf den Linien der
select char(number) from numbers where number<255
InformationsquelleAutor KM.
Wie etwa base64-Codierung? Wir verwenden, um SMS-Nachrichten, die in unserem SMS-Gateway-DB nicht lesbar von den Entwicklern.
Unser Anliegen war es, nicht zu 'verschlüsseln', nur um es 'nicht leicht lesbar'. Ich war einer der Entwickler und ja, ich konnte entschlüsselt haben, es in einer Sekunde.
Es gibt einige sperren, die vorhanden sind, nur zu halten ehrliche Leute ehrlich.
Sie nicht müssen zu halten ehrliche Leute ehrlich; das ist warum Sie sind ehrlich! ...ugh. Die Schärfe ist nicht ganz auf Sie gerichtet, es ist nur, dass ich so krank zu hören -blöd - argument von der RIAA und MPAA.
Thomas-Eigentlich kann man "keep honest people honest". Stellen Sie sich vor, Sie arbeiten mit einer Datenbank, die enthält die privaten SMS-Nachrichten, und Sie, als ehrlicher Mann, nicht wollen, dies zu Lesen private Dinge. Wenn Nachrichten als nur-text gespeichert, Sie werden nicht in der Lage "nicht zu Lesen", weil Sie sich nicht verwandeln können, "Lesen-Modus deaktivieren" in Ihrem Gehirn. Lesen private Sachen vielleicht fühlen Sie sich weniger ehrlich, also base64 ist gut genug, um dies zu verhindern. Es schützt nicht gegen Unehrlichkeit, aber es hilft zu verhindern, dass Unbehagen für ehrliche Entwickler, die nicht wollen, um die privaten Informationen sehen.
InformationsquelleAutor karim79
Gibt es ein paar Optionen.
Wenn Sie wollen, sehr stark, man konnte sich in mcrypt.
Aber wenn es nur so arbeiten Entwickler kippe den text Lesen, ohne etwas zu tun es tatsächlich. Dann könnten Sie einfach BASE64 codieren oder uuencode es
InformationsquelleAutor Ólafur Waage
Wenn du mcrypt installiert (alle meine aktuellen PHP-Umgebungen haben, können Sie mcrypt_encrypt und mcrypt_decrypt wie diese:
was nutzt eine global
$key
und AES (sehr stark).Nachteile sind performance (im Vergleich zu einfacheren wie Base64) und dass Sie irgendwie reparieren müssen Sie einen Schlüssel.
Cheers,
InformationsquelleAutor Boldewyn
wenn Sie mysql-version um 5, dann brauchen Sie nicht einmal viel von php für Sie, die Sie tun können, es in Ihre Abfrage mit der mysql-string-Funktionen
encrypt(text, password)
unddecrypt(text, password)
http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html
DECODE(crypt_str,pass_str)
Entschlüsselt den verschlüsselten string crypt_str mit pass_str als Passwort. crypt_str sollte ein string zurückgegeben, die von ENCODE().
ENCODE(str,pass_str)
Verschlüsselt str unter Verwendung pass_str als Passwort. Entschlüsselt das Ergebnis, verwenden Sie DECODE().
Das Ergebnis ist eine binäre Zeichenkette derselben Länge wie str.
Die Stärke der Verschlüsselung ist abhängig, wie gut der Zufallsgenerator ist. Es sollte ausreichen für kurze strings.
update: eine andere Möglichkeit wäre
rot13
^^Aber...ich denke, rot13 war ein Witz.
aber ich brauche nur eine einfache Lösung
rot13 war in der Tat ein Witz. rot13 ist IMMER ein Witz ^^
rot13 ist ideal, wenn Sie etwas benötigen, werden un-lesbar, aber nicht un-hackable.
InformationsquelleAutor stefs
Versuchen, diese PHP-Funktionen convert_uuencode und convert_uudecode:
Funktionen, die es nicht benötigen
InformationsquelleAutor atiruz
Versuchen Sie es mit der mcrypt-Bibliothek. Es ist nicht im Lieferumfang der standard-PHP -, aber es ist leicht herunterladbar und sehr Häufig verwendet. Hier ist ein schnelles tutorial auf das, was Sie mit ihm tun können.
Es ist am besten sicherstellen, dass der Schlüssel, den Sie verwenden für die Verschlüsselung in einem sicheren Ort gespeichert, aber wenn Sie sich nicht wirklich um die Sicherheit besorgt sind, würden Sie wahrscheinlich in Ordnung sein nur hartzucodieren die Schlüssel in Ihrem code irgendwo.
InformationsquelleAutor Eric Petroelje