分享一个批量数据加密小工具(aes高级加密算法, 更新6.0))

如题, 可加密任何文件,包括mkv,rmvb等音频文件,你懂的^V^
加密: AES 256位密钥 CBC工作模式
压缩: zlib

实测了aes,xxtea性能,aes是256位密钥CBC模式,结果如图:
测试代码:
void encrypt_speed_test(void)
{
auto buffer = fsutil::read_file_data(fileName); // 随便一个文件名,或者便分配一段buffer

const int round = 5;
const int times = 200;
cocos2d::log("test data size:%d bytes, %lfMB", buffer.size(), buffer.size() / 1024.f / 1024.0f);
for (int k = 0; k < round; ++k)
{
    cocos2d::log("test round %d", k + 1);

    long start = clock();
    for (int i = 0; i < times; ++i)
    {
        std::string out = crypto::aes::encrypt(buffer); // crypto::aes::overlapped::encrypt(buffer);
    }
    cocos2d::log("aes encrypt %d times use %lf seconds", times, (clock() - start) / (double)CLOCKS_PER_SEC);

    char cKeys] = { 'j', 't', 'u', 'm', 'u', 'q', '1', '2', 'r', '5', 'x', '\0' };
    xxtea_long outlen = 0;


    start = clock();
    for (int i = 0; i < times; ++i)
    {
        auto decodeBuffer = xxtea_encrypt((unsigned char*)buffer.c_str(), buffer.length(), (unsigned char*)cKeys, 12, &outlen);
        free(decodeBuffer);
    }
    cocos2d::log("xxtea encrypt %d times use %lf seconds\n", times, (clock() - start) / (double)CLOCKS_PER_SEC);
}

}

此帖被xseekerj在2015-04-03 21:27重新编辑 ]

图片:QQ图片20150403123511.png


删除]

有没有mac版本的呢

:14: 同求mac的版本

附上接口源码,使用方法, 包含将所有cpp文件添加到工程编译,包含crypto_wrapper.h即可:
方法1: std::string plaintext = crypto::aes::decrypt(input, key)
方法2: crypto::aes::overlapped::decrypt(inout, key); // 复用输入缓冲区

如果选择压缩,加密器会先压缩后加密,解密的时候先解密后解压即可, 具体伪代码如下:
std::string ciphertext = fsutil::read_binary(filename);
crypto::aes::overlapped::decrypt(ciphertext, key);
std::string plaintext = crypto::zlib::uncompress(ciphertext); // 得到明文

2.0.3版
支持加密文件类型配置,支持直接复制文件类型配置,默认mp3, apk等文件直接拷贝, 配置如截图所示:

没mac版,不过加密解密代码是跨平台的。

3.0.3增加4GB以上超大文件加密支持。

图片解密之后放哪里? sprite创建时,如何使用呢?
谢谢

用xxtea吧 ,速度快, 引擎应该已经内置支持了

将截图中的代码修改为:
auto realData = std::string(data.getBytes(), data.getSize());
crypto::aes::overlapped::decrypt(realData);
ret = initWithImageData(realData .c_str(), realData.size());

— Begin quote from ____

引用第8楼PatrickZhang于2015-04-18 22:48发表的 :
用xxtea吧 ,速度快, 引擎应该已经内置支持了 http://www.cocoachina.com/bbs/job.php?action=topost&tid=293275&pid=1287160

— End quote

— Begin quote from ____

引用第9楼xseekerj于2015-04-18 23:45发表的 回 7楼(cococcoo) 的帖子 :
将截图中的代码修改为:
auto realData = std::string(data.getBytes(), data.getSize());
crypto::aes::overlapped::decrypt(realData);
ret = initWithImageData(realData .c_str(), realData.size());

http://www.cocoachina.com/bbs/job.php?action=topost&tid=293275&pid=1287185

— End quote

好的,谢谢

不客气^^^^^^^^^?_?^

不错,赞一个!

:2: :2: 楼主好腻害

:2::2::2::2::2::2::2:

厉害 多谢分享

楼主能分享一下整个工程的源码吗?楼主给的软件很好用,但我觉得还有一些易用性上的修改,不好意思麻烦楼主修改。我初学c++,用的不熟,希望用楼主的工程做一下参考。邮箱2633680461@qq.com

赞。。。。。。。。。。mark

5.2.0.1314版本更新内容:
#1.增加MD5校验,
#2.特定格式文件提取,差异文件提取等功能.
#3.支持密钥长度16,24,32字节选择
#4.支持文件MD5计算和校验
#5.支持CBC模式IVEC生成

运行时出现异常