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#兼容版本相关推荐

  1. 【Android FFMPEG 开发】Android Studio 中 配置 FFMPEG 库最小兼容版本 ( undefined reference to 'atof' )

    文章目录 FFMPEG 最小兼容版本 注意事项 FFMPEG 最小兼容版本 注意事项 1 . 最小兼容版本 : 在 Ubuntu 中编译 FFMPEG 时 , 需要指定头文件 与 NDK 的依赖库 , ...

  2. Selenium Chrome浏览器版本与chromedriver驱动兼容版本对照表

    在使用selenium启动谷歌Chrome浏览器的时候,是需要用到chromedirver的,两者之间的版本是需要匹配的,否则会出现下面类似的报错: Only local connections ar ...

  3. python实现tea/xtea/xxtea加密算法

    tea/xtea/xxtea加密算法 概述 tea xtea xxtea 总结 概述   这里记录一下采用python实现三种加密算法的方式,话不多说,直接上代码. tea from ctypes i ...

  4. Selenium Chrome版本与chromedriver兼容版本对照表

    在使用selenium启动谷歌Chrome浏览器的时候,是需要用到chromedirver的,两者之间的版本是需要匹配的,否则会出现下面类似的报错: Exception in thread " ...

  5. 网站变灰CSS,多浏览器兼容版本

    网站变灰CSS,多浏览器兼容版本: <style> body *{ -webkit-filter: grayscale(100%); /* webkit */ -moz-filter: g ...

  6. 介绍XXTEA加密算法

    TEA算法是由剑桥大学计算机实验室的David Wheeler和Roger Needham于1994年发明,TEA是Tiny Encryption Algorithm的缩写,以加密解密速度快,实现简单 ...

  7. javafx 打开新窗口_新的JMetro JavaFX 11兼容版本

    javafx 打开新窗口 你好,我们又见面了! 这次,新版本与JavaFX 11兼容. 继续阅读以获取详细信息. JMetro 8.5.7和11.5.7版本 JMetro代码已分为2个分支. mast ...

  8. 新的JMetro JavaFX 11兼容版本

    你好,我们又见面了! 这次是一个新版本,该版本与JavaFX 11兼容. 继续阅读以获取详细信息. JMetro 8.5.7和11.5.7版本 JMetro代码已分为2个分支. master分支具有J ...

  9. javafx 教程_新的JMetro JavaFX 11兼容版本

    javafx 教程 你好,我们又见面了! 这次,是一个新版本,该版本与JavaFX 11兼容. 继续阅读以获取详细信息. JMetro 8.5.7和11.5.7版本 JMetro代码已分为2个分支. ...

最新文章

  1. Java Build Tools: Ant vs Maven vs Gradle
  2. 【动态规划】硬币问题
  3. Oracle的sys_connect_by_path函数
  4. Spring Boot 消息队列 RocketMQ 入门
  5. 刚接触电子时,有过哪些百思不得其解的问题?
  6. java windows 2008_Windows server 2008 R2 安装Java环境
  7. 【C语言重点难点精讲】C语言中的重要符号
  8. 小程序中view的自定义属性获取
  9. linux拷贝到新建文件夹命令行,Linux创建文件touch,复制文件cp,tab补全,链接文件ln命令...
  10. 【译】数据显示:中国的程序员是世界上最牛的程序员?
  11. 软件测试——闭着眼睛测试软件
  12. Redux的学习笔记-(一)(B站学习笔记)
  13. IntelliJ IDEA主题选择
  14. 机器学习算法工程师领域现状
  15. 用群晖服务器搭建网站
  16. 认同和确定性矩阵(Ralph Stacey's Agreement and Certainty Matrix)-译
  17. ISO26262功能安全 安全等级和量化指标
  18. 智库说 | 徐远:数字时代的城市潜力
  19. html+css悬浮加速器
  20. 教学|3DSMAX制作爆炸粒子的技巧,游戏特效这么做

热门文章

  1. linux 9 aml 设置wifi,aml常用命令.pdf
  2. 完整回顾刘强东明尼苏达事件,他的这一夜让京东市值蒸发600亿
  3. NOIP提高组 旷野大计算
  4. 阿里云云盾安全事件提醒:挖矿程序
  5. 2014 年放弃阿里巴巴offer 的人是否格外多?如果是,为什么?
  6. 深度解析Istio系列之策略与遥测篇
  7. 水经注在后浅村地形测绘图中的套合应用案例
  8. 乐视网复牌即跌停,仍有千万买单甘作“接盘侠”
  9. Python 爬虫-抓取小说《鬼吹灯之精绝古城》
  10. 网络基础 -- 应用层HTTP协议