nodejs的pako库中gzip的加密,go解压gzip

最近利用go语言对公司里的nodejs写的接口进行重写。遇到了不同语言之间对接数据的一些问题。

其中有几个问题浪费了我几天时间

nodejs

1.nodejs写接口再发送数据或者返回数据的时候底层默认会对数据进行base64加密然后使用url编码再进行传输,如果同用node接受的话感觉不出来什么不同,但是用golang接收数据的时候不得不对这些数据进行处理。url解码->字符串补全为4的倍数->再进行base64解码.

2.node里面crypto-js库对数据进行des-cbc加密的时候使用16位的key,实际上底层还是8位的key

3.node的pako库再对数据进行gzip进行压缩的时候用的是deflate算法,底层使用的是zlib压缩方法。他会先对数据进行unicode编码然后再进行压缩。go接收数据解码的时候需要对数据进行unicode解码以及使用zlib库进行解压。

 

//压缩
func DoZlibCompress(src []byte) []byte {
	var in bytes.Buffer
	w := zlib.NewWriter(&in)
	w.Write(src)
	w.Close()
	return in.Bytes()
}
//解压
func DoZlibUnCompress(compressSrc []byte) []byte {
	b := bytes.NewReader(compressSrc)
	var out bytes.Buffer
	r, _ := zlib.NewReader(b)
	io.Copy(&out, r)
	return out.Bytes()
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值