25.10 blenc 

Version: 0.1 | Lizenz: PHP-Lizenz |
blenc ist ein Paket, das dazu dient, PHP-Scripts zu verschlüsseln. Die Idee ist, das Script so zu verschlüsseln, dass die Daten nicht mehr direkt eingesehen bzw. verändert werden können, also quasi eine »Closed Source« zu erstellen. Das kann sehr hilfreich sein, wenn Sie Ihre Programme verkaufen oder Ihre Kunden davon abhalten wollen, die Daten zu verändern.
Im Gegensatz zum bcompiler wird kein Bytecode gespeichert, sondern der reine PHP-Code wird mithilfe des Blowfish-Algorithmus verschlüsselt und abgelegt. Das hat den Vorteil, dass im Quelltext Passwörter und Ähnliches vorhanden sein können, ohne dass diese direkt eingesehen werden können. Allerdings muss ich darauf hinweisen, dass diese Daten durchaus bei der Ausführung des Scripts aus dem Speicher ausgelesen werden können.
Der Nachteil besteht darin, dass die Scripts langsamer ausgeführt werden, da sie erst entschlüsselt und dann noch übersetzt werden müssen. In vielen Fällen wird sich das aber nicht unbedingt bemerkbar machen.
Nachdem Sie das Paket, das übrigens nur unter PHP 5 läuft, installiert haben, müssen Sie in der php.ini noch einen zusätzlichen Eintrag vornehmen. Und zwar ist es erforderlich, den Namen und Pfad der Datei, die die blenc-Schlüssel enthält, der Direktive blenc.key_file zuzuweisen. Diese Datei, deren Namen Sie frei wählen können, wird von Ihnen angelegt und muss pro Zeile einen Schlüssel enthalten. Diese Schlüssel werden zum Dekodieren des Programmcodes benötigt. Daher sollte die Datei natürlich auch vor dem Zugriff unautorisierter Personen geschützt sein, da Ihr Script andernfalls entschlüsselt werden kann.
Das Paket stellt nur eine Funktion, nämlich blenc_encrypt(), zur Verfügung. Diese bekommt als ersten Parameter das Script als String übergeben. Die zweite Variable ist der Name der Datei, in der die verschlüsselten Daten abgelegt werden sollen. Zusätzlich können Sie als dritten Parameter noch einen Schlüssel angeben, der für die Verschlüsselung genutzt werden soll. Übergeben Sie diesen Schlüssel nicht, wird dieser dynamisch generiert.
<form> Dateiname: <input type='text' name='file' /> <input type='submit' value='Verschlüsseln' /> </form> <?php if (true == isset($_GET['file'])) { $file = $_GET['file']; $data=file_get_contents($file); if (false == $data) { die ('Datei konnte nicht eingelesen werden'); } $key=blenc_encrypt($data,"$file.enc"); if (false == $key) { die ("Konnte Daten nicht verschlüsseln"); } else { $fp = fopen ('blenc.keys','a'); if (false == $fp) { die ('Konnte Schlüsseldatei nicht öffnen'); } $erg=fputs ($fp, "$key\n"); if (false == $erg) { die ('Konnte Schlüssel nicht speichern'); } fclose($fp); } echo "Datei $file verschlüsselt und als $file.enc gespeichert<br /> Schlüssel gespeichert"; } ?>
Listing 25.13 Verschlüsselung mit blenc
Listing 25.13 öffnet ein Formular, in das Sie den Namen einer Datei eingeben können, die kodiert werden soll. Das Script liest die Datei ein, kodiert die Daten und speichert den Schlüssel, der automatisch durch das Script generiert wird.
Die verschlüsselte Datei behält den Originalnamen, allerdings wird zusätzlich noch die Endung .enc angehängt. Um die Datei ausführen zu können, müssen Sie diese wieder umbenennen, so dass sie dann wieder die Endung .php hat.