tea加密 android,使用tea算法对数据进行加密

2023-11-28 21:20

本文主要是介绍tea加密 android,使用tea算法对数据进行加密,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对QQ协议进行分析过的同学可能知道,QQ的数据传输是使用tea算法进行的加密。

tea算法是一种对称加密算法,特点是速度快,代码量小(加密、解密的核心算法总共才20来行)。算法的安全性虽然不比AES,但其算法的破译难度取决于其迭代的次数。网上说QQ是16次迭代,推荐的迭代次数是64次。我就对这些简洁小巧的事物没有抗拒力,于是在网上搜索一下其代码,研究一下。

找到了一个别人封装好的类,很好用,我一会打包起来给大家。

我对代码进行了处理,写了一个简单的加密字符串的软件。

e43fd273815a5b9caa9591ffaaf9a9aa.png

首先引用了网上的一个类,很简洁的90行代码,其中加密的方法是:

TEA tea(key, TIMES, false);

tea.encrypt(plain, crypt);

解密的方法是:

TEA tea(key, TIMES, false);

tea.decrypt(crypt, plain);

构造函数中传入密钥key,TIMES是迭代次数,我用的64次,第三个参数是“是否专为网络序”,如果加密完成后的密文不在网络上传输的话,就填false。

encrypt方法对密文进行加密,plain是明文,crypt是输出密文的缓冲区。而decrypt方法正好相反。

下面是几点要注意的:

第一,plain、key、crypt三个参数类型都是byte *,也就unsigned char *,里面保存的是二进制码,是不能直接输出在屏幕上的,所以你如果要加密字符串,输出hex,就得加一些代码处理一下。如果大家加密一个文件的话,就不用处理了。

第二,key长度16bit,所以我用了一个md5处理之。将我们输入的任意长度的字符串先hash成md5,再作为一个16bit的key传入tea的构造函数。

第三,加密时,明文长度必须是8bit,于是我把明文分成许多8bit的段,将每段密文加密。如果密文密文长度不是8的倍数,则我会在最后一段明文后面补随机二进制位,凑成8bit。所以一段明文加密出来的结果可能不相同,但不相同的一定是最后8bit,前面都应该是一样的。而最后8bit中有效长度,我就放在密文的第一位。所以密文一定是奇数长度。

我在网上看QQ的TEA加密是这样两个技巧:和我类似补随机二进制位补齐8的倍数,但采用了交织算法:消息被分为多个加密单元,每一个加密单元都是8字节,使用TEA进行加密,加密结果与下一个加密单元做异或运算后再作为待加密的明文。

这样感觉会更加复杂和安全一点,但我嫌麻烦就没这么处理了。如果对安全性要求更高的同学可以自己下去稍微一改。

我把源文件打包给大家,里面包含了我的整个工程。附件中自己下。大家可以根据自己的需要进行修改。

这篇关于tea加密 android,使用tea算法对数据进行加密的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/430284

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件