HMAC-MD5参数签名算法
更多中电联在线工具
HMAC-MD5 是一种基于 MD5 哈希函数的消息认证码(MAC)算法。它用于确保消息的完整性和认证,通常用于数据传输和 API 请求。其基本步骤如下:
-
密钥准备:选择一个密钥(K),如果 K 的长度超过 MD5 的块大小(64 字节),则先对 K 进行 MD5 哈希处理,得到一个新的 K'。如果 K 的长度小于 64 字节,则用零填充至 64 字节。
-
创建内外填充:
- 内填充(ipad):对 K' 每个字节与 0x36 进行异或操作,得到内填充。
- 外填充(opad):对 K' 每个字节与 0x5C 进行异或操作,得到外填充。
-
计算 HMAC:
- 先计算内层哈希:
inner_hash = MD5(ipad || message),其中||表示拼接操作。 - 然后计算外层哈希:
HMAC = MD5(opad || inner_hash)。
- 先计算内层哈希:
最终得到的 HMAC 值可以用作消息的签名,以验证消息的完整性和真实性。
以下是一个使用 Java 实现 HMAC-MD5 签名算法的示例:
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;
import java.util.Base64;public class HmacMd5Demo {public static void main(String[] args) {String secretKey = "your_secret_key"; // 替换为你的密钥String message = "your_message"; // 替换为你的消息try {String hmacMd5 = hmacMd5(secretKey, message);System.out.println("HMAC-MD5: " + hmacMd5);} catch (Exception e) {e.printStackTrace();}}public static String hmacMd5(String key, String data) throws NoSuchAlgorithmException, InvalidKeyException {Mac mac = Mac.getInstance("HmacMD5");SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "HmacMD5");mac.init(secretKeySpec);byte[] hmacBytes = mac.doFinal(data.getBytes());// 将字节数组转换为十六进制字符串StringBuilder hexString = new StringBuilder();for (byte b : hmacBytes) {String hex = Integer.toHexString(0xFF & b);if (hex.length() == 1) {hexString.append('0');}hexString.append(hex);}return hexString.toString().toUpperCase(); // 返回大写的十六进制字符串}
}
相关文章:
HMAC-MD5参数签名算法
更多中电联在线工具 HMAC-MD5 是一种基于 MD5 哈希函数的消息认证码(MAC)算法。它用于确保消息的完整性和认证,通常用于数据传输和 API 请求。其基本步骤如下: 密钥准备:选择一个密钥(K)&#…...
【word】文章里的表格边框是双杠
日常小伙伴们遇到word里插入的表格,边框是双杠的,直接在边框和底纹里修改边框的样式就可以,但我今天遇到的这个有点特殊,先看看表格在word里的样式是怎么样,然后我们聊聊如何解决。 这个双杠不是边框和底纹的设置原因…...
我常用的两个单例模式写法 (继承Mono和不继承Mono的)
不继承Mono 不继承Mono代表不用挂载到场景物体上面,因此直接饿汉式 加 合并空运算符判空创建实例 >(lambda表达式)的意思是get,就是将instance赋给Instance属性 //单例private static JsonDataManager instance new JsonDataManager();public stati…...
Android 自定义Toast显示View
1、创建一个tosat显示的布局文件:toast_custom.xml <?xml version"1.0" encoding"utf-8"?> <com.hjq.shape.layout.ShapeLinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width&…...
SCRM呼叫中心高保真Axure原型 源文件分享
在数字化时代,客户关系管理(CRM)对于企业的成功至关重要。SCRM呼叫中心后台作为一款专为CRM设计的软件原型,致力于为企业提供高效、智能的客户沟通解决方案。本文将详细介绍该产品的核心功能及其对企业提升客户满意度和销售业绩的…...
Ubuntu(Linux)tcpdump使用方法详解
tcpdump命令 1.从所有网卡获取数据包 tcpdump -i any2.从指定网卡获取数据包 tcpdump -i eth03.指定网卡,IP,写文件 tcpdump -i eth0 host 192.168.16.101 -w ./tcp.dat //host 后面是发送方的地址4.指定网卡,源IP且目的IP,写入…...
Centos安装Nginx 非Docker
客户的机器属于 Centos7 系列,由于其较为陈旧,2024开始众多镜像和软件源都已失效。此篇文章将详细记录在 Centos7 操作系统上从零开始安装 Nginx 的整个流程。 本文Nginx是安装在/usr/local/nginx下 详细步骤如下: 准备Nginx安装包&#x…...
免费版的音频剪辑软件:这四款有没有你的菜?
随着音频编辑需求的日益增长,免费的音频剪辑软件逐渐成为许多创作者、学生和普通用户的心头好。今天,就让我为大家介绍几款热门的免费音频剪辑软件,并分享一下我的使用感受吧! 一、福昕音频剪辑 直通车(复制粘贴到网站…...
Facebook的隐私之战:数据保护的挑战与未来
在数字化时代,隐私保护成为了公众关注的焦点,尤其是在社交媒体巨头Facebook身上。随着用户数据泄露事件的频发,Facebook面临着日益严峻的隐私挑战。这些挑战不仅涉及法律法规的遵循,还影响着用户信任、公司声誉以及未来的发展方向…...
自定义注解和组件扫描在Spring Boot中动态注册Bean(二)
在Spring Boot中,自定义注解和组件扫描是实现动态注册Bean的两种重要手段。通过它们,开发者可以灵活地管理Spring容器中的Bean,提高开发效率和代码的可维护性。本文将详细讲解自定义注解和组件扫描在Spring Boot中如何动态注册Bean。 自定义…...
常见网络协议的介绍、使用场景及 Java 代码样例
以下是几种常见网络协议的介绍、使用场景及 Java 代码样例: 一、HTTP(HyperText Transfer Protocol,超文本传输协议) 介绍: HTTP 是用于在 Web 浏览器和 Web 服务器之间传输超文本的应用层协议。基于请求 - 响应模式…...
音视频好文总结
RTSP play同步 ffplay播放器研究分析 ffplay播放器 暂停、逐帧、音量、快进快退seek功能分析 RTSP RTP RTCP SDP基础知识 flv格式分析与解复用 TS格式详解 m3u8格式详解 FLV格式详解 MP4格式详解 HLS协议详解 RTMP协议详解 HTTP-FLV协议详解 H.264 SPS、PPS详解 H…...
云服务器磁盘满了,清理docker无用缓存、容器等清理
docker system prune 命令用于清理 Docker 系统中的各种未使用资源。根据你提供的警告信息,这条命令将会移除以下内容: 所有已停止的容器(all stopped containers) 所有未被至少一个容器使用的网络(all networks no…...
Flutter flutter_native_splash 使用指南
Flutter flutter_native_splash 使用指南 视频 https://youtu.be/dGq6LbipvXA https://www.bilibili.com/video/BV1d52tYFEzz/ 前言 原文 使用 flutter_native_splash 优化 Flutter 启动画面体验 本文详细介绍了如何在 Flutter 中使用 flutter_native_splash 插件自定义启动…...
谷歌审核放宽,恶意软件不再封号?是反垄断案影响还是开发者们的错觉
最近,谷歌因其“垄断”案而成为科技行业的焦点,这个案件可能导致谷歌业务的重大调整。同时,在Google Play上,一些开发者发现谷歌审核好像放宽了不少,这是不是与反垄断有关,谷歌应用上架或将迎来春天&#x…...
C++实现一个线程池
原文链接:C实现一个线程池 介绍 线程池是提高CPU利用率的一个非常高效的方法,线程池就是通过预先创建多个线程,当有任务时就执行,无任务时就阻塞. 相比一般的多线程方法,线程池更加简单,模块化,并且效率更高,因为不会重复创建删除线程. 预备知识 异步线程(包括f…...
为什么inet_ntoa会返回错误的IP地址?
目录 1、调用inet_addr和inet_ntoa实现整型IP与点式字符串之间的转换 1.1、调用inet_addr将点式字符串IP转换成整型IP 1.2、调用inet_ntoa将整型IP转换成点式字符串IP 2、调用inet_ntoa返回错误点式字符串IP的原因分析 3、解决多线程调用inet_ntoa返回错误点式字符串IP的办…...
编码风格之(8)C++语言规范(Google风格)3.md
编码风格之(8)C特性规范(Google风格)3 Author: Once Day Date: 2024年10月12日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 源码分析_Once-Day的…...
openrtp 音视频时间戳问题
解决音视频发送的rtp问题 openrtp增加了音频aac的发送,地址 OpenRTP Gitee开源地址 同时使用两个rtp ,来发送音频和视频 使用以下音频rtp,是可以发送和接收的,音频端口在视频端口上2 v0 o- 0 0 IN IP4 127.0.0.1 sMy Stream cI…...
了解Android中为什么需要多线程?
在Android开发中,多线程是一个至关重要的概念。理解并合理应用多线程,可以显著提升应用的性能和用户体验。 一、Android多线程的基本概念 1. 主线程与UI线程 在Android中,主线程也称为UI线程,它负责处理用户输入、事件分发、绘…...
如何实现Vuetify与GraphQL Code Generator的完美结合:终极类型安全数据获取指南
如何实现Vuetify与GraphQL Code Generator的完美结合:终极类型安全数据获取指南 【免费下载链接】vuetify 🐉 Vue Component Framework 项目地址: https://gitcode.com/gh_mirrors/vu/vuetify 在现代Web开发中,Vuetify组件框架与Graph…...
重构魔兽争霸III地图编辑:HiveWE的技术革新与性能突破
重构魔兽争霸III地图编辑:HiveWE的技术革新与性能突破 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 行业痛点:传统地图编辑器的技术瓶颈 魔兽争霸III地图创作者长期受限于原版编辑…...
利用快马ai快速原型ventoy图形化工具,三步制作多系统启动u盘
利用快马AI快速原型Ventoy图形化工具,三步制作多系统启动U盘 最近在折腾多系统启动盘,发现Ventoy这个开源工具确实好用——直接把ISO镜像扔进U盘就能启动,再也不用反复格式化。但命令行操作对新手不太友好,于是想做个图形化工具。…...
别再纠结了!手把手教你用FreeSWITCH 1.10 + Verto模块搭建WebRTC智能外呼系统(含完整配置文件)
WebRTC智能外呼实战:基于FreeSWITCH与Verto的高效解决方案 在数字化转型浪潮中,企业通信系统正经历从传统电话向互联网融合的深刻变革。我曾为多家金融机构和电商平台设计过智能外呼系统,发现一个共性痛点:如何在不依赖客户端安装…...
Docker下XTDrone仿真平台搭建全攻略(ROS-Noetic版,含常见错误解决方案)
Docker下XTDrone仿真平台搭建全攻略(ROS-Noetic版) 在无人机开发领域,仿真测试是验证算法、降低硬件损耗的关键环节。XTDrone作为国内开发者广泛使用的开源仿真平台,结合ROS和Gazebo提供了完整的无人机仿真解决方案。本文将带你从…...
实战演练:基于快马平台快速构建kafka电商用户行为分析系统
实战演练:基于快马平台快速构建Kafka电商用户行为分析系统 最近在做一个电商数据分析项目,需要实时追踪用户的点击和浏览行为。经过调研发现,Kafka作为分布式消息队列非常适合这种高吞吐量的场景。下面分享我是如何用InsCode(快马)平台快速搭…...
用快马平台实践vibe coding:五分钟生成你的音乐心情可视化原型
今天想和大家分享一个特别有趣的小项目——用InsCode(快马)平台快速实现音乐心情可视化网页。这个项目的灵感来源于vibe coding理念,也就是通过编程直接表达当下的情绪和氛围。整个过程就像用代码画画一样直观,特别适合创意型开发者。 项目构思 我想要做…...
保姆级教程:手把手教你配置英飞凌TC38x的Overlay功能(附寄存器详解)
保姆级教程:手把手教你配置英飞凌TC38x的Overlay功能(附寄存器详解) 在汽车电子控制单元(ECU)开发中,实时标定参数是开发调试过程中不可或缺的环节。英飞凌TC38x系列微控制器提供的Overlay功能,…...
别再手动画码了!C#搭配ZXing.Net库,5分钟搞定商品标签一维码与会员卡二维码生成
企业级条码生成实战:用C#和ZXing.Net实现高效标签与会员卡管理 在仓储物流和会员管理的数字化浪潮中,条码技术早已从简单的商品标识进化为企业数据流转的核心枢纽。想象一下这样的场景:当仓库管理系统(WMS)收到订单时,系统自动生成…...
LoRA-drop避坑手册:如何用20%参数达到90%效果?附RoBERTa实战案例
LoRA-drop实战指南:用20%参数实现90%效果的智能参数剪枝技术 当你在微调一个拥有数十亿参数的RoBERTa模型时,GPU显存监控面板上的数字是否总让你心惊胆战?传统LoRA技术虽然大幅降低了训练成本,但对于资源有限的中小团队而言&#…...
