【发布时间】:2010-11-06 08:02:26
【问题描述】:
只要用户登录,基于 C/C++ 的 cgi Web 应用程序就会在服务器上创建一个临时文本文件。当用户注销时,该文本文件将被删除。我想加密这个文本文件以及文件的内容。该文件将包含用户名和密码等信息。
最好的方法是什么?
编辑:我看到有人建议使用库。我的问题是除了标准 C++ 库我什么都不能使用。
【问题讨论】:
标签: security encryption
只要用户登录,基于 C/C++ 的 cgi Web 应用程序就会在服务器上创建一个临时文本文件。当用户注销时,该文本文件将被删除。我想加密这个文本文件以及文件的内容。该文件将包含用户名和密码等信息。
最好的方法是什么?
编辑:我看到有人建议使用库。我的问题是除了标准 C++ 库我什么都不能使用。
【问题讨论】:
标签: security encryption
使用知名库(例如 openssl)并遵循知名的 examples 并远离特定于平台的解决方案。
【讨论】:
我认为您可能会以错误的方式处理此问题。如果安全,真正的安全是目标,那么即使是加密形式,您也不会想要存储密码(因为如果密钥被盗,它可以被解密,正如其他人所说)。
您应该做的是存储密码的哈希值(使用适当的盐)。这意味着没有人(甚至网站管理员)可以确定用户的密码。他们只能接受一个密码,并通过使用相同的盐对输入进行散列来查看它是否正确(你不能反转散列)。
另外,这种情况很适合数据库,你在用吗?
Google 使用盐的密码散列,您可以从真正的安全专家那里了解它(我不是)。
【讨论】:
目前被认为“安全”的加密标准是 AES(也称为 Rijndael)。您可以在 Codeproject 和许多其他地方找到 C++ 实现。
请注意,当使用 AES 或任何其他对称加密标准时,您必须将加密/解密密钥存储在您的应用程序中。如果有人发现了密钥,他可以解密您使用此密钥加密的所有文件。
如果您的应用程序将在 Windows 下运行,您还可以使用DPAPI 来存储加密信息。
【讨论】:
修改后的答案。
您希望代码加密和解密可与您的 C++ 代码一起使用的文件。
编写自己的代码 (like this one) 是绝对不正确的。
但是,你说你不能使用标准库。
标准(也可能是开源)库可能是在应用程序中实现加密的最正确方法。如果您选择不这样做,那么您只有两个选择,
我仍然会坚持选择标准库或将这样的开源代码集成到我的应用程序中。请解释是什么阻止你这样做。
旧:出于某种原因,我认为需要 PHP 代码...我的错误。
本文给出a PHP encryption symmetric program example using crypt将密码存储在文本文件中。
可能相关的 Stackoverflow 问题
【讨论】: