我会使用OpenSSL创建S / MIME公钥/私钥对,然后使用OpenSSL命令进行加密和解密。我相信这优于使用PGP,因为openssl包含在大多数Linux操作系统中,而PGP则没有。OpenSSL也是基于标准的,一旦你记下了命令,通常更容易使用。
我建议不要使用“纯 PHP”解决方案(纯 PHP 是指在 PHP 中执行加密,而不是使用 PHP 调用现有库或单独的可执行文件)。您不想在PHP中进行批量加密。太慢了。你想使用OpenSSL,因为它是高性能的,而且安全性很好理解。
这就是魔力。
要创建 X.509 密钥:
$subj="/C=US/ST=California/L=Remote/O=Country Govt./OU=My Dept/CN=Mr. Agent/emailAddress=agent@investiations.com"
openssl req -x509 -newkey rsa:1024 -keyout mycert.key -out mycert.pem -nodes -subj $subj
这将私钥放在mycert中.key公钥放在mycert.pem中。私钥不受密码保护。
现在,要使用 S/MIME 对邮件进行签名,
openssl smime -sign -signer mycert.pem -inkey mycert.key <input >output
要使用 S/MIME 加密邮件:
openssl smime -encrypt -recip yourcert.pem <input >output
要使用 S/MIME 解密邮件:
openssl smime -decrypt -inkey mycert.key -certfile mycert.pem <input >output
我还有一些关于从C语言绑定中使用OpenSSL的演示,但不是从PHP使用的。