XXTEA 加密算法 C++ C#兼容版本号

1.一个不错的可逆加密算法XXTEA

之前无意中看到了TexturePacker 使用了XXTEA来加密图片资源。所以花了点时间来看了下XXTEA。

一般有两种加密算法:1.像md5,SHA1,等hash算法,是不可逆的。一般数据库存的username和password就用这个。

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 可逆加密解密算法

时间: 2024-10-29 19:07:09

XXTEA 加密算法 C++ C#兼容版本号的相关文章

XXTEA 加密算法 C++ C#兼容版本

1.一个不错的可逆加密算法XXTEA 之前无意中看到了TexturePacker 使用了XXTEA来加密图片资源.所以花了点时间来看了下XXTEA. 一般有两种加密算法:1.像md5,SHA1,等hash算法,是不可逆的.一般数据库存的用户名和密码就用这个. 2.本文所提到的XXTEA算法,是可逆的,有个key可以加密. 安全方面的东西还蛮多的,说到key,还有什么public key, private key,我都还给老师了.忘光了. 可逆加密算法的需求还是比较广的,像加密游戏存档(发现还是无

hadoop备战:hadoop,hbase兼容版本号汇总

Hbase的安装须要考虑Hadoop的版本号,即兼容性.有不足的希望能指出. 下面考究官网得到的,关于hadoop版本号和hbase版本号可到下面网址中下载:http://mirror.bit.edu.cn/apache/hbase HBase-0.92.x HBase-0.94.x HBase-0.96.x HBase-0.98.x Hadoop-1.0.0-1.0.2 S S X S Hadoop-1.0.3+ S S S S Hadoop-1.1.x NT S S S Hadoop-0.2

介绍XXTEA加密算法及其C实现

介绍XXTEA加密算法及其C实现 http://en.wikipedia.org/wiki/XXTEA “微型加密算法(TEA)及其相关变种(XTEA,Block TEA,XXTEA)都是分组加密算法,它们很容易被描述,实现也很简单(典型的几行代码). TEA 算法最初是由剑桥计算机实验室的 David Wheeler 和 Roger Needham 在 1994 年设计的.该算法使用 128 位的密钥为 64 位的信息块进行加密,它需要进行 64 轮迭代.该算法使用了一个神秘常数δ作为倍数,它

SQLite XXTea加密学习

这几天优化数据库读写,移植了xxtea加密到最新的数据库sqlite 3.12.2里,一些好文章放在这里.移植后,数据库读写性能异常优秀! 这几天又发现,数据库还是发生了无法写入情况,数据库崩溃掉了.所以,估计想兼容以前数据库是很困难的了.. 十分推荐他的博客:SQLite学习笔记(十)&&加密    Sqlite学习笔记(一)&&编译安装 sqlite3.6.18加密模块change(讨论) sqlite3 加解密 SQLITE3 加密总结 sqlite3+使用总结 SQ

探寻不同版本号的SDK对iOS程序的影响

PDF版本号:http://pan.baidu.com/s/1eQ8DVdo 结论: 同样的代码.使用不同版本号的SDK来编译.会影响MachO头中的值, 从而使程序表现出不同的外观. 代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIScreen *mainScreen = [UIScreen mainScree

xcode下build release版本号的.a库

1. 点击房子 图标button 2. 弹出下拉菜单选择Edit Scheme 条目 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcnlmZGl6dW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="20%"> 3. 例如以下图.在左边table控件中选择 Run.然后右边 Info 条目以下选择 Build

cocos lua 加密与解密 混淆 (版本cocos3.4)

cocos luacompile cocos luacompile Overview Usage Available Arguments Samples Overview Compile the .lua files to .luac. Usage cocos luacompile [arguments] Available Arguments arg available value sample description necessary -h, --help - - Show the hel

cocos2d-x lua 加密

usage: cocos luacompile [-h] [-v] [-s SRC_DIR_ARR] [-d DST_DIR] [-e] [-k ENCRYPTKEY] [-b ENCRYPTSIGN] [--disable-compile] 对 lua 文件进行加密和编译为字节码的处理. optional arguments: -h, --help            show this help message and exit -v, --verbose         更多输出信息.

ssh 配置文件讲解大全 ssh调试模式 sftp scp strace进行调试

ssh 配置文件讲解大全  ssh调试模式  sftp scp strace进行调试 http://blog.chinaunix.net/uid-16728139-id-3265394.html 最近在研究openssh的源代码,不得不折服它代码的精炼和彪悍,即便搞清楚了其架构和思路之后,愣是到头来愣是发现,其实这个小东西还是有很多不为人知却又是研究代码不得不了解的知识,偶然发现如此强悍的介绍, 利索当然地笑纳一下. 一)客户端与服务端的通讯认证流程: 第一阶段: 双方协商SSH版本号和协议,协