XXTEA 加密算法 C++ C#兼容版本
2014-06-16 09:36
441 查看
1.一个不错的可逆加密算法XXTEA
之前无意中看到了TexturePacker 使用了XXTEA来加密图片资源。所以花了点时间来看了下XXTEA。一般有两种加密算法:1.像md5,SHA1,等hash算法,是不可逆的。一般数据库存的用户名和密码就用这个。
2.本文所提到的XXTEA算法,是可逆的,有个key可以加密。
安全方面的东西还蛮多的,说到key,还有什么public key, private key,我都还给老师了。忘光了。
可逆加密算法的需求还是比较广的,像加密游戏存档(发现还是无法防止内存修改),加密日志,加密图片等。
可逆加密算法我的要求比较简单:
1.足够安全,2.速度快,3.跨语言
2.XXTEA代码
#include <stdint.h> #define DELTA 0x9e3779b9 #define MX (((z>>5^y<<2) + (y>>3^z<<4)) ^ ((sum^y) + (key[(p&3)^e] ^ z))) void btea(uint32_t *v, int n, uint32_t const key[4]) { uint32_t y, z, sum; unsigned p, rounds, e; if (n > 1) { /* Coding Part */ rounds = 6 + 52/n; sum = 0; z = v[n-1]; do { sum += DELTA; e = (sum >> 2) & 3; for (p=0; p<n-1; p++) { y = v[p+1]; z = v[p] += MX; } y = v[0]; z = v[n-1] += MX; } while (--rounds); } else if (n < -1) { /* Decoding Part */ n = -n; rounds = 6 + 52/n; sum = rounds*DELTA; y = v[0]; do { e = (sum >> 2) & 3; for (p=n-1; p>0; p--) { z = v[p-1]; y = v[p] -= MX; } z = v[n-1]; y = v[0] -= MX; } while ((sum -= DELTA) != 0); } }
这个是wiki上抄的代码,可以看出代码非常简短,加密和解密合起来都只有这么点。
对C语言还真是不熟悉,网上找了个C++和C#的代码,发现写的还不错。可以对任意字符串(包括中文),用字符串作为key加密。结果是经过base64变成了简单的字符串,这样可以比较方便处理。
int _tmain(int argc, _TCHAR* argv[]) { string painText = "hello world 啊"; char * temp =(char *) painText.c_str(); string key = "1234567890abcdef";//秘钥 cout<< "pain text:"<<painText<<endl; string result = xxtea_encrypt(painText,key);//加密 cout<<"encrypt result:" <<result<<endl; string result_1 = xxtea_decrypt(result,key);//解密 cout<< "decrypt result:" <<result_1<<endl; system("pause"); return 0; }
尝试去找了下java版本,不知道为什么不兼容,以后再看。
3.下载地址
资源是 http://my.csdn.net/jxjgssylsg 那下载的。http://www.waitingfy.com/?attachment_id=1159
参考:
XXTEA 可逆加密解密算法
相关文章推荐
- XXTEA 加密算法 C++ C#兼容版本号
- c语言版本 xxtea 加密算法实现
- C++版本xxtea使用
- C/C++关于版本兼容的方法.txt
- XXTEA 加密算法
- 跨平台的加密算法XXTEA的封装
- 如果此程序没有正确安装,请选用与此版本兼容的设置重新安装”C#程序的解决办法
- UML工具推荐 Poseidon版本 可以免费下载,自动生成代码 C++ Java C# VB.NET等 (来自德国汉堡的国际性建模软件开发商Gentleware AG的)
- 如何在Visual Studio中选择C++和C#的编译器版本
- 跨平台的加密算法XXTEA的封装
- 跨平台的加密算法XXTEA的封装
- C#给C++传参的兼容问题
- 黄聪:C#编程生成的Word2007版本的文件如何兼容Word2003
- XXTEA 加密算法的 JavaScript 和 PHP 实现
- “如果此程序没有正确安装,请选用与此版本兼容的设置重新安装”C#程序的解决办法
- 跨平台的加密算法XXTEA的封装
- C#编程生成的Word2007版本的文件如何兼容Word2003?(通过代码将docx文件转存为doc文件)
- C#调用C++版本dll时的类型转换需要注意的问题小结
- c# 兼容不同版本excel
- C#和Javascript间互转的Xxtea加解密