1

我有一个 PHP 驱动的 Web 表单,我希望能够输入密码、对其进行加密并将其加载到数据库中。然后,使用 Python 查询该密码,对其进行解密,然后使用它通过 SMTPLIB 对 Microsoft Exchange 电子邮件服务器进行身份验证。其余的身份验证信息将以纯文本形式存储。我的主要目标是不以纯文本形式存储密码。

我尝试使用这两种语言的唯一原因是我的程序的其余“工作”是在 Python 中完成的。我只将 PHP 用于一个简单的界面。这只是为了一致性。

是否有一个简单易用的跨语言可逆加密库可用于此目的?

用 PHP 编写电子邮件脚本会更好吗?如果是这种情况,会为此任务推荐哪个库?

4

2 回答 2

0

如果您需要读回密码,请在数据库层而不是应用程序层进行加密 - 只需确保您在本地或通过 SSL 连接到数据库。

要存储密码,步骤如下:

  • 电脑 >>
  • HTTPS >>
  • Web 服务器(PHP 形式)>>
  • (HTTPS 如果在不同的服务器上>>)
  • 数据库(AES 加密)

根据您使用的数据库,语法可能会发生变化,但使用 MySQL,您可以执行以下操作:

INSERT INTO `table` (`password`) 
VALUES (AES_ENCRYPT('{$sPassword}', '{$sEncryptionKey}'))

由于 PHP 正在将其写入数据库,因此您可以使用 PDO 准备语句来获取其中的数据......

要使用 Python 脚本检索密码,您只需在 SQL 服务器上运行 SELECT 语句,使用类似(假设数据在 AES 加密的 BLOB 中)这样的语句:

SELECT CONVERT(AES_DECRYPT(`table`.`password`, '{$sEncryptionKey}') USING 'utf8')
AS `password`

这样,您在 PHP 和 Python 之间需要的唯一通用数据就是加密密钥(只是一个字符串)。只要您在通过 Internet 传递此数据时保持 SSL 连接,就应该没问题。

于 2013-08-19T15:52:40.857 回答
0

AES对称加密:

于 2013-08-19T15:50:11.730 回答