2011-07-26 121 views
3

最近我写了一个QT程序,要求我加密/解密文件。我对加密技术很陌生,因为我完全不知道如何使用编程进行加密。谷歌搜索一段时间后,我发现这个thread这是非常类似于我的目标。 他们建议使用加密++,但我的问题是当我到达那里时,有大量的加密选择。我只想加密一个文件,不需要一个复杂的文件,也不需要密码来打开文件。只有我的程序可以打开并阅读该文件。如何选择加密算法来加密/解密文件?

我可以知道如何选择适合我的加密算法吗?

THanks @!

+3

您提供的信息不足。你从哪个人试图隐藏文件内容? (即其他可以看到文件但不能看到应用程序可执行文件的用户,可以看到但不能运行应用程序的人,可以运行应用程序的人)。他们看不见它有多重要?你是否试图让它变得足够硬,不值得他们的时间,或者几乎不可能?他们将如何确定和掌握IT?它是什么类型的文件内容(例如数字,文本,可执行代码)? –

+1

传统的ROT13加密算法如何?它也可以在没有密码的情况下运行... ;-) –

+0

选择解密算法很容易;它必须是加密算法的逆向。 –

回答

3

考虑到你对我对这个问题的评论的回复中的目的的解释,似乎除了XML的低级混淆之外没什么意义。例如,您可以简单地用任意值(例如AA十六进制)对文件内容进行XOR或在连续字符(AA,23,B7,...)上使用少量值,然后循环使用AA再次。听起来不像使用真正的加密库有很多好处:任何决心搞砸他们的软件操作的人都会找到一种方法......

8

也许很短的(很短)介绍到密码算法将是有益的:

  • 对称加密:使用相同的密钥来加密和解密。例子包括DES,AES和Blowfish。
  • 非对称加密:需要某个密钥来加密(公共),而另一个密钥需要解密(私有)。例子包括RSA,DSA和ElGamal

对于这个应用程序,我会建议一个对称算法,AES可能会很适合(AES256)。不管你使用什么,总会有一个密钥(否则它不会是很好的加密)。简单的方法是直接在程序中存储密码。这将允许用户避免输入任何内容,但是即使在编译后的二进制文件中,确定的攻击者也可以轻松地找到密码。

除非您提供进一步的详细信息,否则这只是我可以获得的具体信息。我希望这有帮助。

-1

最简单的“真正的”对称算法可能是河豚,有sample code in 'c' and'c++'这是很容易集成到你的代码

有一个独立的QCrypto LIB(不是主要的Qt SRC的一部分),但它可能是一个小比你需要的更复杂

+2

不,有人问我“应该使用什么密码”永远不要告诉“去执行密码”。他们应该被告知使用高质量图书馆的标准算法。 – Novelocrat

+0

该链接准备使用算法作者(Bruce schneier)和其他人的标准算法代码 –

+0

RC4比Blowfish编程简单得多。 – rossum