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

cor*_*OLO 6 c++ encryption

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

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

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

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

我是加密库的新手,请提出你的建议,我将自己做背景研究.

编辑

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

sne*_*rch 7

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

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

也就是说,查看TomCryptCrypto ++.

编辑

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

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

编辑2

为了"隐藏"解密密钥,您可以简单地存储二进制密钥(解密算法本身使用的内容)而不是文本表示 - 或者您可以使用一串乱码.没关系,休闲用户无论如何也无法使用密钥,你无法将其隐藏于坚定的人:)