Szyfrowanie gpg w php

Zawsze bardzo mi brakowało obsługi gpg w php. Teraz już jest. Można szyfrować, podpisywać i odszyfrowywać przy pomocy kluczy publicznych i prywatnych.


Wystarczy taki kod:

$res = gnupg_init();
gnupg_addencryptkey($res,"D5DA92C049F421D97C660FE5F1B9B347F0F029BA");
$zaszyfrowane = gnupg_encrypt($res, "To jest próba zaszyfrowania tekstu przez PHP");
$error = gnupg_geterror($res);
if($error) {
echo $error;
}
else {
echo nl2br($zaszyfrowane);
}

i gotowe. Po wykonaniu czegoś takiego dostajemy:

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.6 (GNU/Linux)

hQIOA100dBDLy5jvEAf/UOFQ28yweyn3tBxEo4TnyhYxpyCxFf32Mlzvw8XvOob5
JVSXVPWjhY5uUU+ckPEmnPGBUGYTz2cZy1zx4v6hOvnhe+GoUlYySCWCBJojZPU1
EBPkY4x85RgvDrPWe9AmV2DagHSVvCWd4kEd1xfh523aqbcTK+GgRXApQqJ5v9To
REqPC5nHplg1zA6/VOTTltrLrp3xC76fzotfznRaS1rm5kYh11TZ3cI6nqqnNPtN
EMJsm2zFj+3KuPb2y44wHR67aPXRqPoFUe/sWeY0SkdE7VevNOio3uK2PpYC+Is2
VYWZeRMbjOhjN00s9HZ3tiNlzbHsW/OYu3TXywTVpAgAhgmXBcK69I2YThVnsydG
Da6+y19KlB2/uLARp2TNFFLnrGZq4h3aSTqBWdutlWIu5wAGbjblPHWg5M8xFjJX
agv0n0gWF0Klgt1dKkmkanJMWfScHp9qAwedGX67wt5Vnwxz26X/9A7kF1k6RCox
iKLRxKblErnfJEQIpwRpsXRtz7EwmtVnOX9yaw/X6AJdAyPnv90C+x4etfHlHGZO
UIIrzrfRb83Zo/hs5G0zfJofD2I7nmbbIM+kZyW0l7QqbC1WwD+YKyUbdb4Ly+C5
TvYuRDUBkDmBnwOYcmMA8Sec3nlc9G2U/a9qXsCoZo7uSUxAHr1fXohuoS5d1TT4
IdJnAaDAGP/DcgWEXUKrSs6eUD5ISr1s9QxryPd6ZjRG6Bji1OykDCtLR4Yn6R29
Uo77cd0B1+nHO+ZU9sLsVAeDgYSFvmD41MuJxzLoj+l3BJHflEvhFLzG2Umf2kcK
WqboyUl2mX0v2Q==
=fmus
-----END PGP MESSAGE-----

Cały opis jest na http://pl.php.net/manual/pl/book.gnupg.php jedyny problem to zainstalować rozszerzenie PHP’a http://pl.php.net/manual/pl/gnupg.installation.php.

Zainstalowałem to rozszerzenie na domyślne konfiguracji Ubuntu 8.04 (desktop).
Należy zainstalować pakiety php5-dev, libgpgme11-dev i wtedy dopiero wydać polecenie pecl install gnupg. Po zainstalowaniu wszystkiego należy na końcu pliku /etc/php5/apache2/php.ini dodać linijkę extension=gnupg.so no i jako ostatnia czynność restartować apacha /etc/init.d/apache2 restart. Gotowe, rozszerzenie gnupg zainstalowane.

Klucze przechowywane są w katalogu .gnupg, prywatne w pliku secring.gpg a publicznie w pubring.gpg . Jeśli nie ma takiego katalogu ani takich plików to przy pierwszy wywołaniu funkcji php zostanie on utworzony. Miejsce położenia tego katalogu możemy zmieniać jednak należy pamiętać o ustawieniu zmiennej środowiskowej GNUPGHOME funkcją [sourcecode lang=”php”]putenv(„GNUPGHOME=/var/www/projekty/.gnupg”);[/sourcecode]
Zaimportowanie kluczy prywatnych i publicznych do katalogu .gnupg można dokonać programem gpg.

1 thought on “Szyfrowanie gpg w php

Comments are closed.