news 2026/4/15 1:06:19

适配md5老算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
适配md5老算法

新平台开发的系统和老系统混合使用,遇到个烦人问题。老系统对字符串md5和新系统算的不一样。老系统是很近以前开发的,开发商早没影了,只好反编译,得到算法如下:

public static String Md5(String input){ MessageDigest md = MessageDigest.getInstance("MD5"); byte[] digest = md.digest(input.getBytes()); BigInteger bi = new BigInteger(digest); return bi.toString(16); }

这段代码的缺陷:

  1. new BigInteger(digest)会把 MD5 字节数组转成有符号整数,结果可能带负号
  2. 不会自动补全前导零,导致长度不固定(不是标准 32 位)

新系统是前端做md5发往后端验证,代码如下:

import md5 from 'js-md5';

md5(data)

这种写法会导致两端计算结果不一样。修正如下:

function eHRMd5(str) { // 1. 用js-md5拿到标准字节数组 const bytes = md5.digest(str); // 2. 转Java风格有符号BigInteger const bi = bytesToJavaSignedHex(bytes); // 3. 输出和后端一致的结果 return bi.toString(16); } // 【纯数字实现】无 8n、无 0n、无任何 BigInt 语法! function bytesToJavaSignedHex(bytes) { let hex = ''; const negative = (bytes[0] & 0x80) !== 0; if (negative) { // 负数:补码计算 let temp = []; let carry = 1; for (let i = bytes.length - 1; i >= 0; i--) { let val = 255 - bytes[i] + carry; carry = val > 255 ? 1 : 0; temp[i] = val & 255; } hex = bytesToHex(temp); hex = '-' + hex.replace(/^0+/, ''); // 去前导零 + 负号 } else { // 正数 hex = bytesToHex(bytes).replace(/^0+/, ''); } return hex || '0'; } // 字节数组转十六进制 function bytesToHex(bytes) { return Array.from(bytes, b => (b & 0xff).toString(16).padStart(2, '0') ).join(''); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 1:03:24

每日极客日报 · 2026年04月14日

每日极客日报 2026年04月14日 今日精选 20 条 IT 科技热点,GPT-6 明日发布倒计时,AI Agent 生态持续爆发,GitHub 开源项目狂揽数十万星。 🔥 今日头条 GPT-6 明日发布:18 个月研发 5 万亿参数,AGI 最后一…

作者头像 李华
网站建设 2026/4/15 0:58:48

大模型赋能金融:小白程序员必看!收藏这份智能化转型蓝图

本文系统探讨了AI大模型对金融行业的深刻变革,分析了其技术原理与落地实践,覆盖银行、证券、保险等核心领域。结合工商银行、湘财证券等案例,剖析了智能投研、风险管理等场景的应用范式。文章直面数据隐私、算法偏见等挑战,展望了…

作者头像 李华
网站建设 2026/4/15 0:58:43

CTF入门指南:Web安全提权实战解析

1. Web安全提权基础概念 第一次参加CTF比赛时,我对着题目里"提权"两个字发呆了半小时。后来才明白,这就像玩密室逃脱时找到了门禁卡,但还需要找到更高级别的管理员卡才能打开最终宝箱。在Web安全领域,提权就是从普通用户…

作者头像 李华
网站建设 2026/4/15 0:52:56

交通枢纽:大客流无感定位 + 人流热力 / 滞留 / 逆行智能分析

交通枢纽:大客流无感定位 人流热力 / 滞留 / 逆行智能分析技术白皮书主标题:告别闸机与标签!交通枢纽大客流无感定位,热力/滞留/逆行全智能分析 副标题:无GPS、无穿戴、纯视觉全域三维空间计算,车站/机场/…

作者头像 李华
网站建设 2026/4/15 0:48:05

芯洲SCT SCT2A10STER ESOP-8 DC-DC电源芯片

特性宽输入范围:4.5V - 85V0.6A连续输出电流0.8V 1%反馈参考电压集成750mΩ高端和500mΩ低端功率MOSFET睡眠模式下静态电流为100uA的脉冲频率调制(PFM)4ms内部软启动时间可调频率300kHz至800kHz可编程输入电压的精确使能阈值欠压锁定保护&…

作者头像 李华