Ziemlich gute Privatsphäre
Kommentare

Fertige Klassen
Das ganze Verfahren gibt es bereits in Klassen verpackt, damit man sich nicht mehr um die Details kümmern muss. Der meiner Meinung nach beste Vertreter sind die Crypt_GPG-Klassen aus dem

Fertige Klassen

Das ganze Verfahren gibt es bereits in Klassen verpackt, damit man sich nicht mehr um die Details kümmern muss. Der meiner Meinung nach beste Vertreter sind die Crypt_GPG-Klassen aus dem PEAR-Projekt [1]. Ein Skript, das Crypt_GPG zur Verschlüsselung nutzt, sieht dann aus wie in Listing 6.

Listing 6
 '/var/www/project/.gnupg', 'binary' => '/usr/local/bin/gpg'));
$gpg->addEncryptKey('info@phpgangsta.de');
$gpg->encryptFile($infile, $outfile);

Der Vorteil ist, dass man sich nicht mehr um die Parameter kümmern muss. Von Nachteil ist allerdings, dass man genau das nicht mehr machen kann, denn die Klasse deckt nicht 100 % der Funktionalität von GPG ab, was bei dem Umfang von GPG auch nicht verwunderlich ist. Für 99 % aller Anwendungen reicht es aber, die wichtigsten Funktionen sind damit möglich.

GPG Made Easy und Extension

Alternativ zu dieser system()-Variante (bzw. im Fall von Crypt_GPG ist es proc_open()) mit der gpg-Applikation gibt es eine zweite Möglichkeit mit GPG zu arbeiten: GPG Made Easy (GPGME) [2]. Das ist eine Bibliothek, die den Zugriff auf GPG-Funktionen für Applikationen erleichtert. Für PHP gibt es die dazu passende Extension ext/gnupg. Die Installation erfolgt dann z. B. so:

$ sudo apt-get install gnupg gpgme gpgme-devel
$ sudo pecl install gnupg

Danach fügt man noch die Zeile extension=gnupg.so zur php.ini hinzu und startet den Apache neu. Auf jedem System ist es etwas anders, bei Debian ist es beispielsweise libgpgme11-dev anstatt gpgme-devel. Ein Skript zur Verschlüsselung zeigt Listing 7.

Listing 7
addencryptkey($fingerprint);

$encrypted = $gpg->encrypt($data);

echo "Encrypted text: n$encryptedn";

Ein weiteres Beispiel der Benutzung zum gleichzeitigen Entschlüsseln und Verifizieren der Signatur gibt Listing 8.

Listing 8
adddecryptkey($fingerprint);

$info = $gpg->decryptverify($data, $decrytped);

echo "Decrypted text: n$decryptedn";
var_dump($info);
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -