概述:
- 功能
- 演示效果
- 工具使用
- 应用到cocos2d-x项目
- 下载
- 总结
- 参考资料
功能:
功能:使用AES CBC 模式对文件及目录加解密,可以应用各个跨平台,目前已经在cocos2d-x win32平台和安卓平台通过测试:
关于AES CBC
优点:
1.隐藏了明文模式;
2.分组密码转化为流模式;
3.可以及时加密传送小于分组的数据;
缺点:
1.不利于并行计算;
2.误差传送:一个明文单元损坏影响多个单元;
3.唯一的IV;
演示效果:
工具使用:
运行于win7系统 ,输出文件及目录,是工具确定的,不可指定。工具会判断是否已经存在文件或目录,如果存在就会删除
- 输入需要加密文件,如:D:SDKpng.png 输出D:SDKpng-enc.png
- 输入需要解密文件,如:D:SDKpng.png 输出D:SDKpng-dec.png
- 输入需要加密目录,如:D:SDKpng 输出D:SDKpng-enc
- 输入需要解密目录,如:D:SDKpng 输出D:SDKpng-dec
应用到cocos2d-x项目
cocos2d-x 是通过getData来读取文件内容的,只是加密plist png jpg 等。
UserDefault这个是读取xml的要小心,本次的应用跳过这个,因为涉及到xml的文件的解析问题,
所以解密的时候判断是不是if (!forString)
- Win32
把aes.c aes.h拷贝进到该目录cocos2dcocosplatformwin32
同时在工程增加两个文件
CCFileUtilsWin32.cpp插入代码 密码是:123456 自己可以修改
#include “aes.h”
if (!forString)
{
aes_context aes_ctx;
unsigned char IV[16];
unsigned char key[32];
memset(IV, 0, sizeof(IV));
memset(key, 0, sizeof(key));
char password[32] = "123456";
memcpy(key, password, strlen(password));
aes_setkey_dec(&aes_ctx, key, 256);
//CCLOG("buffer :%s", buffer);
aes_crypt_cbc(&aes_ctx, AES_DECRYPT, size, IV, (unsigned char*)buffer, (unsigned char*)buffer);
//CCLOG("buffer dec:%s", buffer);
}
- android
同样把aes.c aes.h 两文件拷贝进去到cocos2dcocosplatformandroid
在CCFileUtilsAndroid.cpp插入代码 密码是:123456 自己可以修改
#include “aes.h”
if (!forString)
{
aes_context aes_ctx;
unsigned char IV[16];
unsigned char key[32];
memset(IV, 0, sizeof(IV));
memset(key, 0, sizeof(key));
char password[32] = "123456";
memcpy(key, password, strlen(password));
aes_setkey_dec(&aes_ctx, key, 256);
//LOGD("data :%s", data);
aes_crypt_cbc(&aes_ctx, AES_DECRYPT, size, IV, (unsigned char*)data, (unsigned char*)data);
//LOGD("data dec:%s", data);
}
打开目录下 Android.mk 增加
aes.c
- Mac||Ios
参考上面的吧笔者没有Xcode
下载
aec.c aec.h 已包含在工具压缩包里面
下载地址:http://pan.baidu.com/s/1dDnb33r
总结:
这个aes算法是可以应用于任何数据加密的,,aes是16位块加密。所以工具加密后,文件大小是会增加一点,因为是得补齐16位,这不足16为的,补’/0’
已经单独放出AES数据加解密:http://www.freeyun.com/aes.html
参考资料:
aes cbc几种模式:http://www.cnblogs.com/happyhippy/archive/2006/12/23/601353.html
aes 开源项目代码,这次是用的源代码是从那抽出来的:https://www.openhub.net/p/xyssl
aes加解密http://www.freeyun.com/aes.html

博主你好 请问你可以贴一下加密部分的代码 我写的加密 用工具解密不了。。。
unsigned char* data = temData.getBytes();
aes_context aes_ctx;
unsigned char IV[16];
unsigned char key[32];
memset(IV, 0, sizeof(IV));
memset(key, 0, sizeof(key));
char password[32] = “123456”;
memcpy(key, password, strlen(password));
aes_setkey_enc(&aes_ctx, key, 256);
aes_crypt_cbc(&aes_ctx, AES_ENCRYPT, temData.getSize(), IV, data, data);
temData.getSize(), 可以给16整除?如果不可以,请补
博主你好 请问你可以贴一下加密部分的代码 我写的加密 用工具解密不了。。。
unsigned char* data = temData.getBytes();
aes_context aes_ctx;
unsigned char IV[16];
unsigned char key[32];
memset(IV, 0, sizeof(IV));
memset(key, 0, sizeof(key));
char password[32] = “123456”;
memcpy(key, password, strlen(password));
aes_setkey_enc(&aes_ctx, key, 256);
aes_crypt_cbc(&aes_ctx, AES_ENCRYPT, temData.getSize(), IV, data, data);
temData.getSize(), 可以给16整除?如果不可以,请补
博主 可以提供加密代码么 我用c++写的加密代码 用工具解密不了
好像加密的字符串比原来的字符串长度变短了 这是什么原因啊 十分感谢
博主 可以提供加密代码么 我用c++写的加密代码 用工具解密不了
好像加密的字符串比原来的字符串长度变短了 这是什么原因啊 十分感谢
16的倍数也不行 加密错误 可以贴一下您的代码么 十分感谢。。。
已发送e-mail
你好,能把你的加解密代码发我一份吗?我也学习下,谢谢!
已经发送
16的倍数也不行 加密错误 可以贴一下您的代码么 十分感谢。。。
已发送e-mail
你好,能把你的加解密代码发我一份吗?我也学习下,谢谢!
已经发送
您好,请问你在CCFileUtilsAndroid里加的代码加在哪个方法里。能不能把您的工程发给我,万分感谢。
压缩包已经有那个文件。。。!CCFileUtilsAndroid.cpp
这个代码写在CCFileUtilsAndroid.cpp哪一行啊,我写在include下面报错啊
压缩包已经有那个文件。。。!CCFileUtilsAndroid.cpp 不是已经回过!
您好,请问你在CCFileUtilsAndroid里加的代码加在哪个方法里。能不能把您的工程发给我,万分感谢。
压缩包已经有那个文件。。。!CCFileUtilsAndroid.cpp
这个代码写在CCFileUtilsAndroid.cpp哪一行啊,我写在include下面报错啊
压缩包已经有那个文件。。。!CCFileUtilsAndroid.cpp 不是已经回过!
你好,这个加密软件在W7下加密图片总是报错,*******all data enc*******
中了中文路径》?
要用英文路径
你好,这个加密软件在W7下加密图片总是报错,*******all data enc*******
中了中文路径》?
要用英文路径
你好,请教一个问题,解码加载部份按你的教程加进去了,Data data=FileUtils::getInstance()->getDataFromFile(“tx/brtext-enc.png”);//brtext-enc.png加密过的图片/* if (!data.isNull()) { Image->initWithPngData(data.getBytes(), data.getSize()); }*/我现在的疑惹是,要怎么才能把读出来的二进制 data转成可以用 Texture2D ,然后我想 把它放资源缓存里面去,SpriteFrameCache::getInstance()->addSpriteFramesWithFile(“tx/brtext.plist”,texture);新手,问题有点呆,
SpriteFrameCache第一次调用图片的时候,本来就是直接缓存的,你去看下官方demo!
你好,请教一个问题,解码加载部份按你的教程加进去了,Data data=FileUtils::getInstance()->getDataFromFile(“tx/brtext-enc.png”);//brtext-enc.png加密过的图片/* if (!data.isNull()) { Image->initWithPngData(data.getBytes(), data.getSize()); }*/我现在的疑惹是,要怎么才能把读出来的二进制 data转成可以用 Texture2D ,然后我想 把它放资源缓存里面去,SpriteFrameCache::getInstance()->addSpriteFramesWithFile(“tx/brtext.plist”,texture);新手,问题有点呆,
SpriteFrameCache第一次调用图片的时候,本来就是直接缓存的,你去看下官方demo!
请问你是如何解密音乐文件的?
我无法解密及播放音乐,所以希望你可以教我,谢谢。
音频,要看它音频怎么读取数据的。读取内容出来然后解密。cocos2d音频读取内容我没去看过。
请问你是如何解密音乐文件的?
我无法解密及播放音乐,所以希望你可以教我,谢谢。
音频,要看它音频怎么读取数据的。读取内容出来然后解密。cocos2d音频读取内容我没去看过。
加密图片那些我都可以了,现在只差音乐文件了。
那你要看音乐文件那里的是这么读取的。
加密图片那些我都可以了,现在只差音乐文件了。
那你要看音乐文件那里的是这么读取的。
我看音乐文件我就不先加密了,有空了在研究。
博主,你的加解密工具是用 QT 写的?
不知道能不能寄一份源码给我?我自己写的代码一直出现问题。
好的,我给你发邮箱
我看音乐文件我就不先加密了,有空了在研究。
博主,你的加解密工具是用 QT 写的?
不知道能不能寄一份源码给我?我自己写的代码一直出现问题。
好的,我给你发邮箱
谢谢你,我已经收到了。
谢谢你,我已经收到了。
博主AesEncDecTool.exe 这个工具的代码可以分享一下吗?
博主AesEncDecTool.exe 这个工具的代码可以分享一下吗?
博主,你的加解密工具可以分享一下吗? 谢谢
博主,你的加解密工具可以分享一下吗? 谢谢
博主,你的加解密工具代码可以分享一下吗? 谢谢 1437936801@qq.com
已在邮件上回复
博主,你的加解密工具代码可以分享一下吗? 谢谢 1437936801@qq.com
已在邮件上回复
博主,你那加密工具可以发我一份吗,我自己写的有问题,谢谢。 1437936801@qq.com
博主,你那加密工具可以发我一份吗,我自己写的有问题,谢谢。 1437936801@qq.com
Pingback: AES加解密 - 自由云
Pingback: AES加解密 - 自由云
自己参照着写了个,但加密后保存的文件,在打开解密总是有问题,博主能发下工具源码吗? 非常感谢.3239939308@qq.com
自己参照着写了个,但加密后保存的文件,在打开解密总是有问题,博主能发下工具源码吗? 非常感谢.3239939308@qq.com
小文件,资源小,可以用,资源大了,22M左右,一加载就挂掉,这大概是怎么什么问题
Fatal signal 11 (SIGSEGV) at 0x0000002c (code=1), thread 1334 (Thread-68)
单个大文件一次加载到内存,可能是安卓内存有限制!我没加载过这么大的文件。
一共是22M,也是分为一个个的小文件,一加密加载没有问题,用这个工具,方法,加密过后,一加载就挂了,
一共是22M,也是分为一个个的小文件,不加密加载没有问题,用这个工具,方法,加密过后,一加载就挂了
你文件是有长度的吧。加密后,文件多了几个字节,会导致挂的。
小文件,资源小,可以用,资源大了,22M左右,一加载就挂掉,这大概是怎么什么问题
Fatal signal 11 (SIGSEGV) at 0x0000002c (code=1), thread 1334 (Thread-68)
单个大文件一次加载到内存,可能是安卓内存有限制!我没加载过这么大的文件。
一共是22M,也是分为一个个的小文件,一加密加载没有问题,用这个工具,方法,加密过后,一加载就挂了,
一共是22M,也是分为一个个的小文件,不加密加载没有问题,用这个工具,方法,加密过后,一加载就挂了
你文件是有长度的吧。加密后,文件多了几个字节,会导致挂的。
楼主可以给我发份加解密的源码吗?谢谢835866862@qq.com
已发
楼主可以给我发份加解密的源码吗?谢谢835866862@qq.com
已发
楼主我将解密代码添加到cocos工程运行提示”can’t detect image format”资源都没加载出来是怎么回事呢?
你解密有问题
博主,能否分享一份,加解密工具的代码吗,非常感谢. 😛
代码没了。。,。