当前位置: 首页 > news >正文

TEA 加密的 Java 实现

import java.nio.ByteBuffer;
import java.nio.ByteOrder;public class TeaUtils {private static final int DELTA = 0x9E3779B9;private static final int ROUND = 32;private static final String KEY = "password";/*** 加密字符串,使用 TEA 加密算法*/public static String encrypt(String source) {ByteBuffer sourceBuffer = ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN);sourceBuffer.put(source.getBytes());sourceBuffer.clear();// 8字节明文int[] plaintext = {sourceBuffer.getInt(), sourceBuffer.getInt()};ByteBuffer keyBuffer = ByteBuffer.allocate(16).order(ByteOrder.LITTLE_ENDIAN);keyBuffer.put(KEY.getBytes());keyBuffer.clear();// 16字节密钥int[] key = {keyBuffer.getInt(), keyBuffer.getInt(), keyBuffer.getInt(), keyBuffer.getInt()};int y = plaintext[0];int z = plaintext[1];int a = key[0];int b = key[1];int c = key[2];int d = key[3];int sum = 0;for (int i = 0; i < ROUND; i++) {sum += DELTA;// 此处必须用 >>> 不能照搬 C++ 用 >>// 参考 https://blog.51cto.com/u_16213450/9390405y += ((z << 4) + a) ^ (z + sum) ^ ((z >>> 5) + b);z += ((y << 4) + c) ^ (y + sum) ^ ((y >>> 5) + d);}ByteBuffer buffer = ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN);buffer.putInt(y);buffer.putInt(z);buffer.clear();StringBuilder builder = new StringBuilder();while (buffer.hasRemaining()) {builder.append(String.format("%#04x", buffer.get()).replace("0x", ""));}return builder.toString().toUpperCase();}/*** 解密字符串,使用 TEA 加密算法*/public static String decrypt(String source) {int length = source.length();byte[] data = new byte[length / 2];for (int i = 0; i < length; i += 2) {data[i / 2] = (byte) ((Character.digit(source.charAt(i), 16) << 4)+ Character.digit(source.charAt(i + 1), 16));}ByteBuffer sourceBuffer = ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN);sourceBuffer.put(data);sourceBuffer.clear();// 8字节明文int[] plaintext = {sourceBuffer.getInt(), sourceBuffer.getInt()};ByteBuffer keyBuffer = ByteBuffer.allocate(16).order(ByteOrder.LITTLE_ENDIAN);keyBuffer.put(KEY.getBytes());keyBuffer.clear();// 16字节密钥int[] key = {keyBuffer.getInt(), keyBuffer.getInt(), keyBuffer.getInt(), keyBuffer.getInt()};int y = plaintext[0];int z = plaintext[1];int a = key[0];int b = key[1];int c = key[2];int d = key[3];// sum = DELTA * ROUNDint sum = 0xC6EF3720;for (int i = 0; i < ROUND; i++) {// 此处必须用 >>> 不能照搬 C++ 用 >>// 参考 https://blog.51cto.com/u_16213450/9390405z -= ((y << 4) + c) ^ (y + sum) ^ ((y >>> 5) + d);y -= ((z << 4) + a) ^ (z + sum) ^ ((z >>> 5) + b);sum -= DELTA;}ByteBuffer buffer = ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN);buffer.putInt(y);buffer.putInt(z);buffer.clear();return new String(buffer.array());}
}

算法参考 java tea加密
 

相关文章:

TEA 加密的 Java 实现

import java.nio.ByteBuffer; import java.nio.ByteOrder;public class TeaUtils {private static final int DELTA 0x9E3779B9;private static final int ROUND 32;private static final String KEY "password";/*** 加密字符串&#xff0c;使用 TEA 加密算法*/p…...

鸿蒙开发电话服务:【@ohos.telephony.data (蜂窝数据)】

蜂窝数据 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import data from ohos.telephony.data;data.getDefaultCellularDataSlotId getDefaultCellularDataSlotId(callback: Async…...

Maven认识与学习

1. Maven介绍 1.2 初识Maven 1.2.1 什么是Maven Maven是Apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具。 官网&#xff1a;Maven – Welcome to Apache Maven Apache 软件基金会&#xff0c;成立于1999年7月&#xff0c;是目前世界上最大的最受…...

“深入探讨Redis主从复制:原理、配置与优化“

目录 # 概念 1. 配置主从同步步骤 1.1 创建文件夹 1.2 复制配置文件 1.3 配置文件关闭 1.4 查看端口号&#xff0c;发现端口号存在 1.5 连接三个端口号 1.6 查看主机运行情况 1.7 让服务器变成&#xff08;主机&#xff09;或&#xff08;从机&#xff09; 1.8 实现效…...

HTML初体验

可参考jd.com官网&#xff0c;ctrlu查看当前页面源代码 找到你的项目&#xff0c;在项目中创建html类型的网页文件 标准的HTML正确书写格式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title&…...

全局特征提取netvlad的理解

...

【设计模式-12】代理模式的代码实现及使用场景

&emsp&#xff1b;代理模式是一种应用很广发的结构性设计模式&#xff0c;它的设计初衷就是通过引入新的代理对象&#xff0c;在客户端和目标对象之间起到中介的作用&#xff0c;从而实现控制客户端对目标对象的访问&#xff0c;比如增强或者阉割某些能力。 1. 概述 代理模…...

网工内推 | 神州数码、弧聚科技网工,IE认证优先,最高18K

01 神州数码 &#x1f537;招聘岗位&#xff1a;高级网络工程师 &#x1f537;岗位职责&#xff1a; 1)提供7*24小时一线运维技术服务&#xff0c;如因应急故障处理应15分钟内到达现场。 2)提供设备的告警信息的分析处理及与故障问题定位服务。 3)完成数据中心网络和HPC超算…...

【Linux】模拟实现一个简单的日志系统

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…...

MongoDB 多层级查询

多层级查询 注意&#xff1a;要注意代码顺序 查询层级数据代码放前面&#xff0c;查询条件放后面 if (StringUtils.isBlank(params.getDocType())) {params.setDocType(DOC_TDCTYPE);}String docName mapper.findByDocInfo(params.getDocType());List<ExpertApprovalOpin…...

grpc代理服务的实现(一)

最近公司需要无感知基于服务代号来实现通信, 并监控和管理通信连接&#xff0c;目前公司使用的是如下的逻辑(当然逻辑简化了&#xff0c;但是思想不变) 目录 简单的原理图代理服务的实现创建 tls tcp 服务, 用于grpc client 和 grpc service 通信保存 与 代理服务建立的 grpc …...

FastAPI系列 4 -路由管理APIRouter

FastAPI系列 -路由管理APIRouter 文章目录 FastAPI系列 -路由管理APIRouter一、前言二、APIRouter使用示例1、功能拆分2、users、books模块开发3、FastAPI主体 三、运行结果 一、前言 未来的py开发者请上座&#xff0c;在使用python做为后端开发一个应用程序或 Web API&#x…...

数据驱动制造:EMQX ECP 指标监测功能增强生产透明度

迈向未来的工业生产&#xff0c;需要的不仅是自动化&#xff0c;更是智能化。如果工业企业的管理者能够实时监测每一生产环节的设备运行状态&#xff0c;每一数据点位情况&#xff0c;洞察和优化每一步生产流程&#xff0c;他们将能够做出更精准的决策&#xff0c;提高生产效率…...

一行代码实现鼠标横向滚动

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 在项目中我们可能会遇到当鼠标在某个区域内&#xff0c;我们希望滚动鼠标里面的内容可以横向滚动&#xff1b; 比如我们一些常见的后台状态栏&#xff1a; 那这种该怎么写&…...

Flink集群架构

在上一章节我们对flink有了一个基本的了解。从它的应用的场景以及它的一些基本的一些核心的一些概念。从本章节开始&#xff0c;我们对flink从它的一个集群的一个架构以及它的一个部署模式着手&#xff0c;去了解flink如何去部署在不同的这样的一个集群的一些资源管理器上面&am…...

计算机网络(6) UDP协议

一.UDP数据报格式 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是一种简单的传输层协议&#xff0c;与TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;相比&#xff0c;UDP提供一种无连接、不可靠的数据传…...

单片机(STM32)与上位机传输浮点数

目录 单片机(STM32)与上位机传输数据的方法1. 传输整形数据2. 传输浮点数据3. 如何打包与解包 单片机(STM32)与上位机传输数据的方法 在进行单片机程序的开发时&#xff0c;常常需要与其他设备进行通信。一种情况是与其他电路板通信&#xff0c;比如STM32主机与STM32从机通信&…...

50etf期权交易规则杠杆怎么计算?

今天带你了解50etf期权交易规则杠杆怎么计算&#xff1f;近年来&#xff0c;期权交易在股票市场中变得愈发流行&#xff0c;其中50ETF期权备受关注。作为一种金融衍生品&#xff0c;50ETF期权为投资者提供了更灵活的投资方式和更多的策略选择。 50etf期权交易规则杠杆怎么计算&…...

鸿蒙: 基础认证

先贴鸿蒙认证 官网10个类别总结如下 https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398 10节课学习完考试 考试 90分合格 3次机会 1个小时 不能切屏 运行hello world hvigorfile.ts是工程级编译构建任务脚本 build-profile.json5是工程…...

2024年最佳插电式混合动力电动汽车

对电动汽车充满好奇和环保意识的司机们还没有准备好跨入纯电动汽车&#xff0c;他们可以找到一个折衷方案&#xff0c;即插电式混合动力车。 在过去的16年里&#xff0c;我一直在把握汽车行业的脉搏。试驾数百辆汽车、电动汽车、插电式混合动力车&#xff0c;跟踪汽车行业的新闻…...

告别频繁输密码!域环境下Windows软件静默安装的两种野路子(慎用)

告别频繁输密码&#xff01;域环境下Windows软件静默安装的两种野路子&#xff08;慎用&#xff09; 在中小企业IT运维的日常中&#xff0c;软件批量部署和远程协助安装堪称两大高频痛点。想象这样的场景&#xff1a;财务部急需更新报税软件&#xff0c;二十台电脑需要同时处理…...

魔兽世界插件开发利器:wow_api技术架构与实战指南

魔兽世界插件开发利器&#xff1a;wow_api技术架构与实战指南 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 技术探索&#xff1a;从需求到架构的演进之路 魔兽世界插件开发生态长…...

驯服失控菜单:让右键操作提速60%的实战指南

驯服失控菜单&#xff1a;让右键操作提速60%的实战指南 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 当你在Windows系统中右键点击文件时&#xff0c;是否曾面…...

从逻辑门到CPU:计算机工作原理详解

戏说CPU的工作原理&#xff1a;从逻辑门到计算系统1. 计算系统的基本构建单元1.1 逻辑门的物理实现计算系统最基本的构建单元是逻辑门&#xff0c;它们可以通过简单的物理实体来演示。以三名士兵为例&#xff0c;我们可以构建最基本的逻辑运算单元&#xff1a;输入单元&#xf…...

告别复杂配置!5分钟掌握OCAT:OpenCore图形化配置神器

告别复杂配置&#xff01;5分钟掌握OCAT&#xff1a;OpenCore图形化配置神器 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore&#xff08;OCAT&#xff09; 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools 如果你…...

在 Java 并发编程和高性能数据处理中,HashMap 和 ConcurrentHashMap 是两大核心容器。它们在 JDK 8+ 中的演进(链表转红黑树、锁机制优化)直接解决了特定业务场景下的性

在 Java 并发编程和高性能数据处理中&#xff0c;HashMap 和 ConcurrentHashMap 是两大核心容器。它们在 JDK 8 中的演进&#xff08;链表转红黑树、锁机制优化&#xff09;直接解决了特定业务场景下的性能瓶颈。 以下结合具体业务场景&#xff0c;深度解析它们的内部机制及设计…...

计算机毕业设计:基于Django与LSTM的大众点评评价预测系统 Django框架 LSTM Hadoop Spark Hive 可视化 大数据 食品 食物(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W&#xff0c;前互联网大厂软件研发、集结硕博英豪成立软件开发工作室&#xff0c;专注于计算机相关专业项目实战6年之久&#xff0c;累计开发项目作品上万套。凭借丰富的经验与专业实力&#xff0c;已帮助成千上万的学生顺利毕业&#xff0c;…...

SAS(Serial Attached SCSI)在企业级存储中的核心设计与实战解析

1. SAS技术在企业级存储中的核心价值 如果你拆开过企业级存储设备&#xff0c;大概率会看到那些带着蓝色或黑色连接器的硬盘背板——这就是SAS技术的战场。作为存储架构师&#xff0c;我经手过的全闪存阵列和磁盘柜里&#xff0c;90%的核心连接都依赖SAS协议。和消费级SATA相比…...

从巨鲸到万物生长:Claude Code如何颠覆AI开发,带你从对话走向Agent平台搭建!

Claude Code凭借其六大核心能力&#xff0c;将AI开发带入全新阶段。通过CLAUDE.md实现项目记忆增强&#xff0c;Skills固化可复用工作流&#xff0c;Sub-Agent处理专业化任务&#xff0c;MCP连接外部服务&#xff0c;Plug-In打包完整解决方案。本文深入解析这些功能&#xff0c…...

别再混淆了!FFmpeg提取AAC/H264流时常见的3个容器格式误区

别再混淆了&#xff01;FFmpeg提取AAC/H264流时常见的3个容器格式误区 第一次用FFmpeg提取音频时&#xff0c;我把.m4a文件直接重命名为.aac&#xff0c;结果播放器报错——这个看似简单的操作背后&#xff0c;隐藏着容器格式与编码格式的深层差异。本文将用真实踩坑案例&#…...