nodejs md5 base64 与java端的不一致?
//客户校验码 使用顺丰分配的客户校验码
String checkWord = "fjcg5PGKaNpPSHFAZ4QsCOkV71R3zVci";
//时间戳 取报文中的timestamp(调用接口时间戳)
String timestamp = "12312334453453";//业务报文 去报文中的msgData(业务数据报文)
String msgData = "{\"language\":\"zh-CN\",\"orderId\":\"QIAO-20200618-004\"}";
//将业务报文+时间戳+校验码组合成需加密的字符串(注意顺序)
String toVerifyText = msgData+timestamp+checkWord;
//因业务报文中可能包含加号、空格等特殊字符,需要urlEnCode处理
toVerifyText = java.net.URLEncoder.encode(toVerifyText,"UTF-8");
//进行Md5加密
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(toVerifyText.getBytes("UTF-8"));
byte[] md = md5.digest();
//通过BASE64生成数字签名
String msgDigest = new String(new BASE64Encoder().encode(md));
这是第三方java 代码,
msgDigest = EzIVrsgF5xBOTwN4YUCGhg==
let md5 = crypto.createHash('md5');
let msgData1 = {"language":"zh-CN","orderId":"QIAO-20200618-004"};
let timestamp1 = 12312334453453;
let checkword1='fjcg5PGKaNpPSHFAZ4QsCOkV71R3zVci';
let toVerifyText1 = JSON.stringify(msgData1) + timestamp1.toString() + checkword1;
let toVerify1 = encodeURIComponent(toVerifyText1,'utf-8');
let msgDigest = md5.update(toVerify1,'utf8').digest('base64');
console.log(msgDigest);
msgDigest=IIKJtuLVzoFTu4kHI8M8vA==
问题出在哪?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
加几个输出或者断点就搞定了.
先输出 你拼接出来的 字符串,就是
msgData+timestamp+checkWord
看看两边一样不,在看看 urlencode 两边一样不,在看 md5 出来的值一样不,在看 base64出来的值一样不