我有一个PHP驱动的Web表单,我希望能够输入密码,加密密码并将其加载到数据库中。然后,使用Python,查询该密码,对其进行解密,然后使用它对使用SMTPLIB的Microsoft Exchange电子邮件服务器进行身份验证。其余的身份验证信息将以纯文本格式存储。我的主要目标是不以纯文本格式存储密码。
我尝试使用这两种语言的唯一原因是我的程序的其余“工作”是用Python完成的。我只使用PHP作为简单的界面。这只是为了保持一致性。
是否有一个易于使用的跨语言可逆加密库可用于此目的?
在PHP中制作我的电子邮件脚本会更好吗?如果是这种情况,建议将哪个库用于此任务?
答案 0 :(得分:0)
AES对称加密:
答案 1 :(得分:0)
如果需要重新读取密码,请在数据库层而不是应用层执行加密 - 只需确保您在本地或通过SSL连接数据库。
要存储密码,步骤如下:
根据您使用的数据库,语法可能会发生变化,但使用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连接,就应该没问题。