请为VC ++ 2008建议一个很好的加密库

时间:2010-09-21 12:37:38

标签: c++ encryption

我正在开展一个小项目,需要你的帮助。以下是详细信息:

  • 我的项目在VC ++ 2008
  • 我需要以加密形式
  • 存储我的项目exe的一些关键资源文件包
  • 在运行exe时,我想动态解密并使用这些文件(不将解密文件存储在临时位置)
  • 有问题的文件是二进制文件
  • 项目小而简单
  • 加密可以简单或适度安全

我正在寻找一个简单项目的加密库/ sdk / toolkit ,该库应该有以下要求

  • 它应该小而简单,我不需要很多功能而且我的开发时间很短
  • 应该可以免费使用
  • 它应该能够解密流,或者直接在内存中解密文件而不将它们存储在任何临时位置
  • 它应该有很好的教程/示例/社区支持,我的开发时间很短
  • 它应支持多种加密策略,以便我可以根据需要切换到更好的算法,而无需更改库

我对加密库真的很陌生,请提出你的建议,我会自己做背景研究。

修改

另外,你能建议一个在EXE中隐藏我的密钥的好方法吗?这是一个单击并运行的应用程序,无需任何注册或安装。

6 个答案:

答案 0 :(得分:7)

解密密钥将在您的程序中硬编码,或者从例如提供。许可证文件?

如果硬编码,不要费心寻找任何类型的花哨加密,你可以希望的是一个(非常薄!)混淆层 - 即使是简单的XOR加扰也不会比AES差。

也就是说,请查看TomCryptCrypto++

修改

你也可以选择一些非常简单的东西,例如TEA。或者您可以坚持使用简单的XOR加密并压缩您的可执行文件;单字节XOR加密的一个很好的特性是加密数据仍然是可压缩的:)(告诫emptor:exe压缩有时会在防病毒应用程序中触发误报)。

要记住的是“如果它运行,它可以被打破”,所以专注于转移随意窥探的眼睛而忘记防止“真正感兴趣的人” - 它需要很多努力和知识,做任何远程成功的事情。

编辑2

对于“隐藏”解密密钥,您可以简单地存储二进制密钥(解密算法本身使用的内容)而不是文本表示 - 或者您可以使用一串乱码。无论如何,临时用户无论如何都无法使用密钥,而且您无法将其隐藏于确定的人之外:)

答案 1 :(得分:2)

我不知道它是否真的能满足您的所有要求,但请查看Botan

答案 2 :(得分:2)

我使用过Crypto ++,虽然我认识到它的概念背后的天才......但我不喜欢使用它(或足够接近)需要天才的事实。有很好的例子,但最轻微的偏离他们的尝试变成了一个非常令人沮丧的时期。

我会推荐Google Keyczar:它专为 easy 加密而设计:

  • 安全默认值,所以不要担心它们
  • 支持多种算法:非对称和对称,散列
  • 处理钥匙,使用旋转机制等......虽然这在您的情况下可能不是非常有用

查看网站:Keyczar

小注意:由于API可能存在流解码的问题,我没有足够的经验来回答这个问题。

答案 3 :(得分:0)

这是一种“UnAnswer”:我知道只有一个免费的图书馆支持你需要的功能,这不是一件小事,也不简单。但无论如何,请看Crypto++。 我想其他人也会提到它。

答案 4 :(得分:0)

您可以使用Capicom ActiveX控件。它已经停产,但我认为这不会引起任何问题。它是微软CryptoAPI的包装。

  • 它只是OS的一个包装器 功能,所以它很小 易于使用。

  • 微软确实为它提供了一个redist, 所以你可以将它包含在内 你的节目。

  • 它可以解密字符串。不确定 关于溪流。

  • 这是来自MS,所以教程和 社区支持是给定的。

  • 它支持多重加密 算法。注意一些 较新的算法不是 适用于旧版本 Windows,因为它使用CryptoAPI。

这并不完美,但如果你想要一些可以快速发展的东西,那就不是一个糟糕的选择。

答案 5 :(得分:0)

如果您只使用Windows,我建议使用Windows加密API http://msdn.microsoft.com/en-us/library/aa388162(v=VS.85).aspx