php - 在 PHP 中使用 PGP 加密文件?

标签 php pgp gnupg openpgp

我想使用 PGP 加密来加密 CSV 文件,我通过 PHP 脚本生成,然后通过电子邮件将该文件发送给客户端。客户会给我加密 key ,我需要用它来加密文件。

我在 Google 上搜索了 PGP,发现它的隐私非常好,我还发现了 OpenPGP http://www.openpgp.org/和 GnuPG http://www.gnupg.org/这两种类型的 PGP 是什么?我应该使用哪一个?

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

我第一次听说这个术语,请任何人帮助理解它并在 PHP 中实现它。

最佳答案

问题一:关于PGP

  • PGP(Pretty Good Privacy)是 Symantec Corporation 的产品和商标(他们几年前购买了它)。
  • OpenPGP 是 PGP 使用的标准。
  • GnuPG(Gnu Privacy Guard)是 PGP 的免费开源实现。

因此,您要做的是加密为 OpenPGP key 。您的客户端使用哪种 OpenPGP 实现来解密数据对您来说并不重要。对于 PHP,通常使用 GnuPG,并且内置接口(interface)。

问题2:在PHP中使用GnuPG

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

首先,导入 key ,其中$keydata为ASCII装甲公钥:

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

然后使用这个 key 加密数据,这次使用客户端 key 的指纹:

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

如果你想加密文件,读取它们并将它们传递给encrypt()。确保在引用 key 时至少使用长 key ID(例如 DEADBEEFDEADBEEF)、更好的指纹(如示例中所示);和 never use short key IDs (DEADBEEF), as those are vulnerable to collision attacks .


更多的是comprehensive example for doing both用户在 PHP 手册中添加。

关于php - 在 PHP 中使用 PGP 加密文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15969740/

相关文章:

php - 如何仅序列化一对多关系的子集?

php - 如何使用包含架构和数据的xml文件自动创建数据库?

python-3.x - GnuPG 已安装,但 python 在运行时未找到它

git - 带有 git 子模块的密码存储

php - 按日和月统计(php)

php - 使用 CSS 和 php 查询参数在另一个 id 中选择一个 id

javascript - 我可以通过 JavaScript 使用 PGP/GPG 吗?

java - PGP,验证证书上的签名

java - 为什么使用 Maven-GPG-Plugin 使用 GnuPG 对项目的 Artifact 进行签名?

repository - 如何在Windows中的Jcenter的Bintray中生成gpg签名 key