在C / C ++中加密文本文件的最佳方法是什么?

时间:2009-06-27 05:42:29

标签: security encryption

基于C / C ++的cgi Web应用程序将在用户登录时在服务器上创建临时文本文件。文本文件将在用户注销时删除。我想加密这个文本文件以及文件的内容。该文件将包含用户名和密码等信息。

这样做的最佳方式是什么?

编辑:我看到有人建议使用库。我的问题是我不能使用标准C ++库。

4 个答案:

答案 0 :(得分:4)

使用知名的文库,例如openssl,并遵循众所周知的examples,远离平台特定的解决方案。

答案 1 :(得分:3)

我想你可能会以错误的方式解决这个问题。如果安全性,真正的安全性是目标那么你甚至不想以加密的形式存储密码(因为如果密钥被盗,它可以被解密,正如其他人所说的那样)。

您应该做的是存储密码的哈希值(使用适当的盐)。这意味着没有人(甚至站点管理员)无法确定用户的密码。他们只能通过使用相同的盐散列输入来接受密码并查看它是否正确(您不能反转哈希)。

此外,这种情况很适合数据库,你使用的是吗?

Google 使用salt进行密码哈希,您可以从真正的安全专家那里了解它(我不是其中之一)。

答案 2 :(得分:2)

目前被认为是“安全”的加密标准是AES(也称为Rijndael)。您可以在Codeproject和许多其他地方找到C ++实现。

请注意,使用AES或任何其他对称加密标准时,必须将加密/解密密钥存储在应用程序中。如果有人发现密钥,他可以解密您使用此密钥加密的所有文件。

如果您的应用程序将在Windows下运行,您也可以使用DPAPI来存储加密信息。

答案 3 :(得分:0)

修订答案 您希望代码加密和解密可与C ++代码一起使用的文件 编写自己的代码(like this one)绝对不正确。

但是,你说你不能使用标准库 标准(可能是开源)库可能是在应用程序中实现加密的最正确方法。如果您选择不这样做,它只剩下两个选项,

  • 实施您自己的标准加密算法版本(并且由于您所犯的任何错误而存在风险)
  • 使用应用程序中的“系统”调用并运行可能(希望)在您的系统上可用的标准加密(如bcrypt)。

我仍然坚持选择标准库或将这样的开源代码集成到我的应用程序中。请解释阻止你这样做的原因。


:出于某种原因,我认为需要PHP代码...我的错误 本文允许a PHP encryption symmetric program example using crypt将密码存储在文本文件中。

可能与Stackoverflow相关的问题