J
j-l-n
Guest
Folgendes Skript ver- und entschlüsselt Eingaben mit einem wählbaren Passwort. Außerdem wird bei einem falschen Passwort nicht einfach nur "Zeichensalat" ausgegeben, sondern es wird durch eine Endmarkierung überprüft, ob das Passwort richtig ist und bei Nicht-Übereinstimmung eine Fehlermeldung ausgegeben.
PHP:
<?php
/*
*
* © 2014 Julian
* http://forum.jswelt.de/members/julian.html
*
* PHP-Skript zur Ver- und Entschlüsselung von Texteingaben mit wählbarem Passwort
* inklusive Überprüfung auf richtiges Passwort durch Setzen einer Endmarkierung
*
*/
//Initialisierung und Vorbereitung der mcrypt-Funktionen
$ivsize = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($ivsize, MCRYPT_RAND);
$password = "Passwort" //Passwort zur Ver- & Entschlüsselung
//hängt definierten String an zu verschlüsselnden Text an, damit erkannt wird, dass an dieser Stelle zuende
$check_string = "END_OF_TEXT";
$check_length = strlen($prefix); //Länge des End-Markers
$text = "Test"; //zu verschlüsselnder Text
//Endmarker anhängen
$text = $text.$check_string;
//String encoden, um Probleme mit Umlauten o.ä. zu vermeiden
$text = base64_encode(htmlentities($text));
//Verschlüsselung mit Blowfish
$encrypt = mcrypt_encrypt(MCRYPT_BLOWFISH, $password, $text, MCRYPT_MODE_CBC, $iv);
//Entschlüsselung:
$decrypt = mcrypt_decrypt(MCRYPT_BLOWFISH, $password, $encrypt, MCRYPT_MODE_CBC, $iv);
//entschlüsselten String wieder zurückdecoden
$decrypt = base64_decode($decrypt);
$length = strlen($decrypt); //Länge des gesamten Strings
$end = $length - $check_length; //Länge des Strings ohne End-Marker
//extrahiert End-Marker aus entschlüsselten String
$end_string = substr($output, -$check_length, $check_length);
//prüft, ob End-String derselbe wie oben definierter und damit Prüfung, ob Password richtig
if(end_string === $check_string){
$output = substr($decrypt, 0, $end); //Endmarker aus Text entfernen
}
else{
$output = "falsches Passwort!";
}
echo $output;
?>