mail libre php gnupg openpgp

php - mail - pgp libre



¿Cómo se utiliza la biblioteca PHP OpenPGP? (2)

Son muy buenos ejemplos basados ​​en el puerto de extensión de PHP que usted solicitó y veremos algunos ejemplos.

Usando GnuPG con PHP - Tutoriales completos

Ejemplo

Obtención de información clave

putenv(''GNUPGHOME=/home/sender/.gnupg''); // create new GnuPG object $gpg = new gnupg(); // throw exception if error occurs $gpg->seterrormode(gnupg::ERROR_EXCEPTION); // get list of keys containing string ''example'' try { $keys = $gpg->keyinfo(''example''); print_r($info); } catch (Exception $e) { echo ''ERROR: '' . $e->getMessage(); }

Cifrar un correo simple

// set path to keyring directory // set path to keyring directory putenv(''GNUPGHOME=/home/sender/.gnupg''); // create new GnuPG object $gpg = new gnupg(); // throw exception if error occurs $gpg->seterrormode(gnupg::ERROR_EXCEPTION); // recipient''s email address $recipient = ''[email protected]''; // plaintext message $plaintext = "Dear Dave,/n The answer is 42./n John"; // find key matching email address // encrypt plaintext message // display and also write to file try { $gpg->addencryptkey($recipient); $ciphertext = $gpg->encrypt($plaintext); echo ''<pre>'' . $ciphertext . ''</pre>''; file_put_contents(''/tmp/ciphertext.gpg'', $ciphertext); } catch (Exception $e) { die(''ERROR: '' . $e->getMessage()); }

Descifrado el correo

// set path to keyring directory putenv(''GNUPGHOME=/home/recipient/.gnupg''); // create new GnuPG object $gpg = new gnupg(); // throw exception if error occurs $gpg->seterrormode(gnupg::ERROR_EXCEPTION); // recipient''s email address $recipient = ''[email protected]''; // ciphertext message $ciphertext = file_get_contents(''/tmp/ciphertext.gpg''); // register secret key by providing passphrase // decrypt ciphertext with secret key // display plaintext message try { $gpg->adddecryptkey($recipient, ''guessme''); $plaintext = $gpg->decrypt($ciphertext); echo ''<pre>'' . $plaintext . ''</pre>''; } catch (Exception $e) { die(''ERROR: '' . $e->getMessage()); }

También deberías mirar el ejemplo.

Hay un puerto de extensión PHP de la biblioteca PGP gnupg . Sin embargo, me cuesta mucho encontrar ejemplos que expliquen cómo usar la biblioteca.

¿Cómo crea correctamente las claves para los usuarios de la aplicación y luego las usa para cifrar / descifrar texto usando la biblioteca GnuPG?


Ver esta URL es una gran ayuda para usted. Descarga el ejemplo y pruébalo.

https://github.com/singpolyma/openpgp-php

O inténtalo: -

Puede descargar los archivos lib / openpgp.php y lib / openpgp_crypt_rsa.php en la URL superior.

ejemplos / keygen.php

<?php require dirname(__FILE__).''/../lib/openpgp.php''; require dirname(__FILE__).''/../lib/openpgp_crypt_rsa.php''; $rsa = new Crypt_RSA(); $k = $rsa->createKey(512); $rsa->loadKey($k[''privatekey'']); $nkey = new OpenPGP_SecretKeyPacket(array( ''n'' => $rsa->modulus->toBytes(), ''e'' => $rsa->publicExponent->toBytes(), ''d'' => $rsa->exponent->toBytes(), ''p'' => $rsa->primes[1]->toBytes(), ''q'' => $rsa->primes[2]->toBytes(), ''u'' => $rsa->coefficients[2]->toBytes() )); $uid = new OpenPGP_UserIDPacket(''Test <[email protected]>''); $wkey = new OpenPGP_Crypt_RSA($nkey); $m = $wkey->sign_key_userid(array($nkey, $uid)); print $m->to_bytes();

ejemplos / sign.php

<?php require dirname(__FILE__).''/../lib/openpgp.php''; require dirname(__FILE__).''/../lib/openpgp_crypt_rsa.php''; /* Parse secret key from STDIN, the key must not be password protected */ $wkey = OpenPGP_Message::parse(file_get_contents(''php://stdin'')); $wkey = $wkey[0]; /* Create a new literal data packet */ $data = new OpenPGP_LiteralDataPacket(''This is text.'', array(''format'' => ''u'', ''filename'' => ''stuff.txt'')); /* Create a signer from the key */ $sign = new OpenPGP_Crypt_RSA($wkey); /* The message is the signed data packet */ $m = $sign->sign($data); /* Output the raw message bytes to STDOUT */ echo $m->to_bytes(); ?>

ejemplos / verify.php

<?php require dirname(__FILE__).''/../lib/openpgp.php''; require dirname(__FILE__).''/../lib/openpgp_crypt_rsa.php''; /* Parse public key from STDIN */ $wkey = OpenPGP_Message::parse(file_get_contents(''php://stdin'')); $wkey = $wkey[0]; /* Parse signed message from file named "t" */ $m = OpenPGP_Message::parse(file_get_contents(''t'')); /* Create a verifier for the key */ $verify = new OpenPGP_Crypt_RSA($wkey); /* Dump verification information to STDOUT */ var_dump($verify->verify($m)); ?>