2009-06-27 107 views
4

只要用户登录,基于C/C++的cgi web应用程序就会在服务器上创建一个临时文本文件。当用户注销时,文本文件将被删除。我想加密这个文本文件以及文件的内容。该文件将包含用户名和密码等信息。在C/C++中加密文本文件的最佳方式是什么?

这样做的最好方法是什么?

编辑:我看到图书馆被建议。我的问题是我不能使用任何标准C++库。

+0

另请参见http://stackoverflow.com/questions/674401/crypto-library-for-c – 2009-06-27 06:19:34

回答

2

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

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

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

+0

一个好主意是程序化生成密钥,所以REing将变得更加困难。 RAM转储仍然是可能的,所以将密钥保存为非顺序格式是一个优点。 – LiraNuna 2009-06-27 06:00:38

+0

“请注意,使用AES或任何其他对称加密标准时,您必须将加密/解密密钥存储在您的应用程序中,如果有人发现密钥,他可以解密使用此密钥加密的所有文件。这正是您为什么/不能/将原始密钥存储在应用程序的可执行文件中的原因。密钥应该由密码或类似密码保护。 – 2009-06-27 06:12:38

3

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

0

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

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

  • (由你犯的错误和危险的弱点)
  • 实现自己的标准加密算法的版本使用“系统”呼叫从您的应用程序中运行,并运行标准加密(如bcrypt),这可能会(希望)在您的系统上可用。

我仍然坚持拿起一个标准库或将这样一个开源代码集成到我的应用程序中。请解释什么阻止你这样做。


:出于某种原因,我想到了一个PHP代码被要求......我的错误。
本文给出a PHP encryption symmetric program example using crypt将密码存储在文本文件中。

可能相关的问题#1

3

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

你应该做的是存储密码的散列(用适当的盐)。这意味着没有人(甚至不是网站管理员)可以确定用户的密码。他们只能接受一个密码,看看它是否正确,或者用相同的盐对输入进行散列(不能颠倒散列)。

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

谷歌用盐密码哈希,你可以从真正的安全专家(我不是一个)了解它。

相关问题