2012-09-12 42 views
0

脚本用于每天通过用户交互发送电子邮件(仅限Gmail)。我想将他们的电子邮件以纯文本文件存储在硬盘中。什么是正确的做法?如何以正确的方式在硬盘上存储密码?

  • 我知道一个方法是询问用户密码保护的电子邮件密码,但这种方法是没有意义的,因为用户必须在每一个电子邮件发送时间键入一个新的密码,所以我宁可问他们的电子邮件密码。

  • 另一种方法是加密密码,并将特定信息与特定信息组合使用,如计算机名称+用户名+系统+ ...,然后使用此密钥对加密密码进行解密。这个问题,我使用Autoit这是易于反编译,所以当一个潜在的攻击者获得加密密码,他们理论上可以知道加密密钥,所以无论谁加密密码许多uniq信息,无论如何,他们都可以得到它。

  • 另一种方法是使用OAuth的Gmail,因此用户并不需要在所有输入密码,但我不能这样做。

任何想法?

+0

什么操作系统?编程环境? (我问一些操作系统和框架有设施可以帮助你) –

+0

语言是[Autoit](http://autoitscript.com)脚本,它仅适用于Windows。 – kissgyorgy

回答

3

既然你在Windows编程,我会建议寻找到Windows的API做密码为你工作。假设你不愿意做出不同的假设(例如:TPM),你可以相信他们比你可能创造的更好。

在Win8中现在有一个PasswordVault类,如果你想针对该操作系统。 在< = Win7,有DPAPI和凭证管理器

这些都不是GMail特定的...这只是通用的“在Windows上安全地存储东西”的各种建议。这很可能是您应该追求的更好的gmail特定方式(例如:特定于服务的凭据)。但即使你这样做了,这也是将其存储在客户端操作系统上的更好方法。

-1

的AutoIt有_Crypt ...()函数用于此。您可以散列@computername或@username,并使用散列作为_Crypt_DeriveKey()函数的密钥来本地化其密码的用法。然后使用该密钥将密码字符串作为数据传递给_Crypt_EncryptData()。将加密密钥存储在纯文本文件中。

当你去回调它时,读取文件,用_Crypt_DeriveKey()再次创建密钥,然后用_Crypt_DecryptData()对其进行解密。后者函数的输出应该是你的密码。

Crypt.au3利用WinAPI的功能进行加密。

+0

你没有看过这个问题,我讨厌那个... 第二点要点。我做了完全一样的,但我不喜欢它。 我想要一个可以看到加密方法(代码)并且仍然无法解密密码的解决方案。 – kissgyorgy

+1

我听说最新版本的AutoIt很难反编译,因为用于旧版本的反编译器不适用于最新版本的反编译器。这是我从不同来源看到的信息。不幸的是,反编译的话题在autoitscript.com论坛中是禁用的,所以我无法证实这一点。另外,接受的答案与我的几乎相同。这两种方式访问​​WinAPI来执行加密......所以我想我会给出用AutoIt来使用UDF的答案。因此,无论哪种方式,如果有人反编译它,他们会看到_Crypt ...()或DllCall()目标API DLL – Mechaflash

+1

要修复上述评论,他们不会看到实际的功能,但调用C++代码用于加密功能的WinAPI。所以他们将是同义词。 – Mechaflash

相关问题