用js将待签名数据以UTF-8的格式转字节流,对字节流进行MD5算法得到的签名字节流,再经过Base64转换为字符串

最近碰到一个接口是要数字签名的,给的示范是用java写的。一开始没明白直接用了对字节流进行了md5加密,后面在java里面把这段代码运行了一遍才发现md5加密后仍然是字节流,然后在md5中找到了这个

md5.digest(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]

用base64加密

let u8s   =  new Uint8Array([100,97,110,107,111,103,97,105]);
Base64.fromUint8Array(u8s);       // ZGFua29nYWk=

然后,java和js这两边输出的结果终于一样了。

生成签名:待签名数据以UTF-8的格式转字节流,对字节流进行MD5算法得到的签名字节流,再经过Base64转换为字符串,即生成了数字签名。
java

public static String makeSign(String data, String encode) throws 	NoSuchAlgorithmException, UnsupportedEncodingException {

   MessageDigest md = MessageDigest.getInstance("MD5");

   md.update(data.getBytes(encode));

   byte[] b = md.digest();

   return (new sun.misc.BASE64Encoder()).encode(b);

}

javascript

import utf8 from "utf-8"
import md5 from "js-md5"
import {Base64} from "js-base64"

var str="data"//代签名数据
//加密后
var sign=Base64.fromUint8Array(md5.digest(utf8.setBytesFromString(str)))
console.log(sign)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值