9. Mai '10
String verschlüsseln
Mit den nachfolgenden Funktionen können Sie Strings, als Zeichenketten ver- und wieder entschlüsseln.
function encrypt
($string, $key) {
$result = '';
for($i=0; $i<strlen ($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
String entschlüsseln
function decrypt
($string, $key) {
$result = '';
$string = base64_decode($string);
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)-ord($keychar));
$result.=$char;
}
return $result;
}
Beispielcode
$geheim = encrypt("Diese Botschaft ist geheim", "tfonfara.de");
$lesbar = decrypt($geheim, "tfonfara.de");
Über die Funktion encrypt() wird zunächst ein String (kann auch eine Variable sein) und ein geheimer Schlüssel, ein Kennwort übergeben. Dieses Kennwort wird benötigt, um die verschlüsselte Botschaft wieder lesbar zu machen. Dafür wird die Funktion decrypt() aufgerufen.
Wenn Ihnen dieser Artikel gefallen hat, oder Sie Anregungen/Kritik haben, würde ich mich freuen, wenn Sie
einen Kommentar schreiben oder
das RSS Feed abonnieren, um immer automatisch über die neuesten Artikel auf dieser Seite informiert zu werden. Sie dürfen diesen Artikel oder die gesamte Seite auch gerne verlinken.
Sorry, vorhin falsch gepostet.
Jetzt aber:
Kannst Du dieses auch als Beispiel in Objective C realisieren?
Wäre Dir sehr dankbar für eine Hilfe.
Bis bald.
Jo
Funktioniert bestens.
Da die Encrypt-Funktion noch ein base64_encode enthält kann der Output problemlos auf alle möglichen Weisen verwendet werden (z.B. in Emails verschickt oder in ein hidden-Field in einer Website geschrieben werden). Er enthält nur Buchstaben, Zahlen und die zwei Sonderzeichen + und /. Es kommt also nicht zu Konflikten mit Quotes oder nicht-binären Übertragungswegen.
Vielen Dank.
Hallo Tobias,
danke für dein en/decode Script.
Wollt es für meine Zwecke einsetzen und komme absulut nicht klar. keine Ahnung was ich falsch mache!?
Ich wollt dieses:
und dieses
$user = base64_decode($_GET['acc']);
$pass = base64_decode($_GET['pwd']);
$data = _check($user, $pass);
if (is_numeric($data))
durch deinen en/decode ersetzen.
Bekomme es nicht zum laufen.
Für deine Hilfe wäre ich Dankbar.
lg
raba300
Thanks. Works great.
Der Code funktioniert nur mit dem im Beispiel angegebenen Passwor (tfonfara.de). Andere Schlüssel werden nicht mehr korrekt decodiert.
Sie müssen in beiden Funktionen beim Aufruf das gleiche Passwort verwenden, dann geht alles.
DANKE,
das kommt davon wenn man schnell mal was macht. Sie haben natürlich recht. Super schnelle Hilfe!!!!
Leider funktioniert der Code nur in 10% der Fälle. An was kann dies liegen?
Ohne weitere Informationen kann ich dazu leider nichts sagen. Eine mögliche Fehlerquelle wäre, dass De- und Encrypt-Funktion verwechselt wurden. Aber da es ja in 10 Prozent der Fälle funktioniert, kann es ja eigentlich nicht an dem Code liegen.
Vielen Dank für die spontane Hilfe! Jetzt klappts an allen Fronten… ;o)
Danke für den Tipp mit dem fehlerhaften Code
Habe das URL-Verschlüsselungsbeispiel auf Basis dieser Funktionen probiert. Kriege aber falschen String raus. Viellt. lags an Zeile 3 in encrypt()) bzw. 5 in decrypt(). Wie muss die denn vollständig aussehen? Ich habe
for($i=0;$i<strlen($string);$i++) { verwendet.
Zur Sicherheit wollte ich dann dieses Basic-Beispiel hier testen, aber die Seite lud überhaupt nicht und Prozessor lief auf Hochtouren. Was mache ich falsch?
Hier muss irgendwo ein Teil des Codes verlorengegangen sein, Entschuldigung dafür.
Versuchen Sie es doch nochmal mit dem obigen Code, ich habe ihn aktualisiert.
Great information! I’ve been looking for something like this for a while now. Thanks!