首页
友情链接
Search
1
centos 7 部署ollama 本地大模型并使用open-webui 可视化
1,708 阅读
2
利用calibre-web搭建私人书库
997 阅读
3
webStrom 通过electron创建第一个桌面程序
698 阅读
4
AdGuardHome 个人DNS服务器搭建记录
633 阅读
5
gitee 发了个人生第一个开源项目
547 阅读
默认分类
kafka
JavaScript
linux
java
vue
自建服务
spring
登录
Search
标签搜索
kafka
vue
docker
electron
JavaScript
spring
quartz
图床
Nginx
spring boot
宝塔
aria2
webUI
docker-compose
Python
小程序
SUI Mobile
k8s
html
PotPlayer
Abdulla
累计撰写
44
篇文章
累计收到
4
条评论
首页
栏目
默认分类
kafka
JavaScript
linux
java
vue
自建服务
spring
页面
友情链接
搜索到
1
篇与
的结果
2023-12-07
充电桩互联互通 hmac-md5加密算法
HmacMd5Signatureimport java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.util.Arrays; public class HmacMd5Signature { private static final byte IPAD = 0x36; private static final byte OPAD = 0x5C; public static String hmacMd5(String data, String sigSecret) throws Exception { byte[] keyBytes = sigSecret.getBytes(StandardCharsets.UTF_8); byte[] dataBytes = data.getBytes(StandardCharsets.UTF_8); byte[] paddedKey = Arrays.copyOf(keyBytes, 64); byte[] xorIpad = new byte[64]; byte[] xorOpad = new byte[64]; for (int i = 0; i < 64; i++) { xorIpad[i] = (byte) (paddedKey[i] ^ IPAD); xorOpad[i] = (byte) (paddedKey[i] ^ OPAD); } MessageDigest md = MessageDigest.getInstance("MD5"); md.update(xorIpad); md.update(dataBytes); byte[] hashIpad = md.digest(); byte[] finalData = new byte[64 + hashIpad.length]; System.arraycopy(xorOpad, 0, finalData, 0, 64); System.arraycopy(hashIpad, 0, finalData, 64, hashIpad.length); md.reset(); md.update(finalData); byte[] hmacMd5 = md.digest(); StringBuilder result = new StringBuilder(); for (byte b : hmacMd5) { result.append(String.format("%02x", b)); } return result.toString().toUpperCase(); }
2023年12月07日
101 阅读
0 评论
1 点赞