快速业务通道

向普通人加密 用PHP程序保护数据

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-25
您要将消息发送给某人,并提供对该消息解密的方法,又该如何办呢?请使用 PHP 支持的公钥加密技术。

使用公钥加密的用户拥有一个私钥和一个公钥,并且他们与其他用户共享公钥。如果您要将一封私有短信发送给您的朋友 John Doe,您可以使用 John Doe 的公钥(您已经将其存储在自已的 keyring 中)加密该消息。John Doe 收到该消息后,只有他可以使用他的私钥对其解密。任何给定用户的公钥和私钥在数学上是不能相关的。对于 PGP 和其他公钥加密方法,不存在从公钥推断某人私钥的方法。

PGP 的附加特性是:私钥的密码实际上不是密码,它是一个密码短语。它可以是整句话,包括标点符号、空格和所有字符样式。

使用基于 PGP 的公钥加密的一种方法是使用 GNU Privacy Guard (GPG)。使用 GPG 加密的任何消息都可以使用 GPG、PGP 或支持任一程序的任何数量的电子邮件客户机插件来解密。在示例中,联机表接受用户输入(包括消息);使用 GPG 为特定的接收方加密消息;然后发送消息。
清单 8. 使用 GPG

<?php
//set up users
$from = "webforms@example.com";
$to = "you@example.com";

//cut the message down to size, remove HTML tags
$messagebody = strip_tags(substr( 向普通人加密 用PHP程序保护数据 - 凌众科技

快速业务通道

向普通人加密 用PHP程序保护数据

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-25
content

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号

POST[''msg''],0,5000));
$message_body = escapeshellarg($messagebody);

$gpg_path = ''/usr/local/bin/gpg'';
$home_dir = ''/htdocs/www'';
$user_env = ''web'';

$cmd = "echo $message_body   HOME=$home_dir USER=$user_env $gpg_path" .
"--quiet --no-secmem-warning --encrypt --sign --armor " .
"--recipient $to --local-user $from";

$message_body = `$cmd`;

mail($to,''Message from Web Form'', $message_body,"From:$from\r\n");

?>

在此示例中,PHP 调用 /usr/local/bin/gpg(此位置因服务器而异),以便使用发送方的私钥和接收方的公钥加密消息。结果,只有接收方可以解密该消息,并且知道来自发送方的消息。此外,还可以设置 HOME 和 USER 环境变量,以通知 GPG 在何处查找存储这些密钥的 keyring。其他标志的功能如下:

--quiet 和 --no-secmem-warning 抑制来自 GPG 的警告。
--encrypt 执行加密。
--sign 添加签名,以验证发送方的身份。
--armor 产生非二进制的 ASCII 输出,这样,易于通过电子邮件将其发送。
正常情况下,正如前面提到的,机密密钥受密码短语的保护。本特定实例没有使用密码短语,因为在每次表单提交时它都需要手工输入。当然,在下列情况下您还可以选择其他选项:在单独文件中提供短语,或使用它自已的身份验证方案防止表单公用(例如,如果它是一个只能由公司销售代表访问的表单)。

另请注意,除非您正在对允许用户输入电子邮件消息的表使用 SSL,否则键入的任何内容都是明文形式的。换句话说,客户机和服务器之间的任何人都可以看见它。不过,这是另一个主题。

结束语

我们对安全性、加密技术,甚至公钥加密技术介绍了很多,目的是帮助您成功开发下一个 PHP 项目。使用加密和其他加密方法的要点不是创建 100% 可靠的无缝系统。关闭的计算机才是不可攻击的系统,但是也不能完全保证,因为某人可能会走上前走,打开它,然后攻击它。加密的要点是使获取敏感数据变得非常困难,以致黑客不再尝试攻击,或尝试攻击失败后离去。

所有安全性考虑必须兼顾方便和保护。使用强大的算法密钥将所有数据都进行单向加密意味着您的数据非常安全,但是使用时很不方便。这带来的相应缺陷也很严重,如同使用非加密的内容一样,为您带来的任何方便也为其他人获取数据带来了可怕的方便。通过加密重要的机密数据(如密码、信用卡号和秘密消息)和添加好的安全措施(如深层防御、过滤用户提供的数据和传统的一般常识

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号