XXTEA 加密算法 C++ C#兼容版本
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#兼容版本相关推荐
- 【Android FFMPEG 开发】Android Studio 中 配置 FFMPEG 库最小兼容版本 ( undefined reference to 'atof' )
文章目录 FFMPEG 最小兼容版本 注意事项 FFMPEG 最小兼容版本 注意事项 1 . 最小兼容版本 : 在 Ubuntu 中编译 FFMPEG 时 , 需要指定头文件 与 NDK 的依赖库 , ...
- Selenium Chrome浏览器版本与chromedriver驱动兼容版本对照表
在使用selenium启动谷歌Chrome浏览器的时候,是需要用到chromedirver的,两者之间的版本是需要匹配的,否则会出现下面类似的报错: Only local connections ar ...
- python实现tea/xtea/xxtea加密算法
tea/xtea/xxtea加密算法 概述 tea xtea xxtea 总结 概述 这里记录一下采用python实现三种加密算法的方式,话不多说,直接上代码. tea from ctypes i ...
- Selenium Chrome版本与chromedriver兼容版本对照表
在使用selenium启动谷歌Chrome浏览器的时候,是需要用到chromedirver的,两者之间的版本是需要匹配的,否则会出现下面类似的报错: Exception in thread " ...
- 网站变灰CSS,多浏览器兼容版本
网站变灰CSS,多浏览器兼容版本: <style> body *{ -webkit-filter: grayscale(100%); /* webkit */ -moz-filter: g ...
- 介绍XXTEA加密算法
TEA算法是由剑桥大学计算机实验室的David Wheeler和Roger Needham于1994年发明,TEA是Tiny Encryption Algorithm的缩写,以加密解密速度快,实现简单 ...
- javafx 打开新窗口_新的JMetro JavaFX 11兼容版本
javafx 打开新窗口 你好,我们又见面了! 这次,新版本与JavaFX 11兼容. 继续阅读以获取详细信息. JMetro 8.5.7和11.5.7版本 JMetro代码已分为2个分支. mast ...
- 新的JMetro JavaFX 11兼容版本
你好,我们又见面了! 这次是一个新版本,该版本与JavaFX 11兼容. 继续阅读以获取详细信息. JMetro 8.5.7和11.5.7版本 JMetro代码已分为2个分支. master分支具有J ...
- javafx 教程_新的JMetro JavaFX 11兼容版本
javafx 教程 你好,我们又见面了! 这次,是一个新版本,该版本与JavaFX 11兼容. 继续阅读以获取详细信息. JMetro 8.5.7和11.5.7版本 JMetro代码已分为2个分支. ...
最新文章
- SAP QM初阶之物料主数据QM视图里的Preferred Inpspection Type
- JUnit 5 – 早期试用体验 – 第2篇
- word2vec原理(二):基于Hierarchical Softmax的模型
- H.264 视频的 RTP 载荷格式
- mysql 字符串 底层_Mysql 的索引底层原理及数据结构详解
- PyTorch 1.0 中文文档:序列化的相关语义
- JS中的Map和Set实现映射对象
- 晚上运动对身体好吗?
- 视频转换器如何将视频MKV转换成MP4格式
- 常见物联网操作系统介绍
- Thinkphp6.0博客源码分享【Wofl-blog】
- Python数据分析-绘图-2-Seaborn进阶绘图-7-网格图
- 零基础搭建Win系统Anaconda+Pytorch+OpenCV深度学习环境(Win10、Win11、RTX 3090显卡也适用)
- matlab图像处理二,图像缩放、旋转、修剪
- Grbl开源固件的官方介绍使用说明【翻译】
- 除了Sublime Text ,还有啥笔记应用能double代码效率?
- 读余光中散文,看到一句诗(In me the tiger sniffs the rose),感觉很经典,摘录如下
- 电梯模型c语言程序,自己制作的简易的 基于51单片机的自动升降电梯简易模型 与大家分享...
- android mtk6592 禁止拖动主界面图标
- 面具星球推荐:3个超级实用的免费网盘搜索网站,只有你想不到没有它搜不到的
热门文章
- Grafana Links
- jquery-3.5.1.js net::ERR_ABORTED 404
- UPC——2020年春混合个人训练第二十四场(DEFG)
- 功利,是一种思维模式
- 【STM32】基于正点原子『探索者』开发板的烧录
- ES6-ES11新特性速查手册
- chrome浏览器内存_如何在Google Chrome浏览器中清除内存
- Could not set property 'xxxxxx' of 'xxxxxx' with value 'xxxxx'
- Idea Lambda expressions are not supported at language level '5'
- 使用raw input 代替全局键盘钩子