kwi 30
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:
[sourcecode lang="php"]$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);
}[/sourcecode]
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.


Inne podjeście do tego problemu prezentuje artukuł http://devzone.zend.com/article/3753-Using-GnuPG-with-PHP alternatywa choć niepolecana jest opisana na http://devzone.zend.com/article/1265-Encryption-and-Decryption-using-PHP-and-GnuPG