在PHP中使用PGPencryption文件?

我想使用PGPencryption来encryptionCSV文件,我通过PHP脚本生成,然后通过电子邮件发送到客户端。 客户端会给我encryption密钥,我需要用它来encryption文件。

我search了PGP,发现它是相当好的隐私,我还发现OpenPGP http://www.openpgp.org/和GnuPG http://www.gnupg.org/这两种types的PGP是什么? 我应该使用哪一个?

另外如何使用PGP在PHP中使用我的客户端提供的密钥encryption文件?

我第一次听到这个词,任何人都可以请帮助理解这一点,并在PHP中实现。

问题1:关于PGP

  • PGP (Pretty Good Privacy)是赛门铁克公司的产品和商标(他们在几年前购买了它)。
  • OpenPGP是PGP使用的标准。
  • GnuPG (Gnu隐私卫士)是PGP的免费开源实现。

所以你想要做的是encryption到一个OpenPGP密钥。 你的客户端用来解密数据的OpenPGP实现对你来说并不重要。 使用PHP,通常使用GnuPG,并且有内置的接口。

问题2:在PHP中使用GnuPG

使用GnuPG接口 ,这是一个可以为PHP安装的扩展。

首先,导入密钥,其中$keydata是ASCII装甲公钥:

 <?php $gpg = new gnupg(); $info = $gpg -> import($keydata); print_r($info); ?> 

然后使用此密钥对数据进行encryption,这次使用客户端密钥的指纹:

 <?php $gpg = new gnupg(); $gpg -> addencryptkey("8660281B6051D071D94B5B230549F9DC851566DC"); $enc = $gpg -> encrypt("just a test"); echo $enc; ?> 

如果你想encryption文件,读取并传递给encrypt() 。 确保在引用键时至less使用长键ID(例如DEADBEEFDEADBEEF ),更好的指纹(如示例中所示); 并且从不使用短密钥ID( DEADBEEF ),因为那些容易受到碰撞攻击 。


这是一个更全面的例子,用于在PHP手册中添加一个用户。