我调用自己写的一个接口,传入的json字符串如下图所示:
{
"mobileNumber":"+84883232131",
"idNumber":"12121233"
}
我复制这个字符串,在在线HMAC-SHA1 generator网站(https://www.freeformatter.com...,对其用一个timestamp(1569327938875)做key进行签名加密,得到的结果
58782ff20de5d527c0951f97c36ce40a346c8d60
content-type是 application/json; charset=utf-8
在服务器java程序上,我通过如下获得bodyStr
byte[] body = StreamUtil.readBytes(request.getReader(), "UTF-8");
String bodyStr = new String(body)
但是调试窗口看到,程序中对bodyStr用timestamp(1569327938875)签名加密结果是tmp(b024eab123fffdcac5fae23e438de4cfbedeed63),我copy bodyStr的value放到
MDUtil.getHmacSHA1String("{ \t\"mobileNumber\":\"+84883232131\", \t\"idNumber\":\"12121233\" }", ts)
结果是110f7161be08e239ef1f5c5026cc99c35a3f7430
总之就是三个结果,我知道字符串之间的格式可能不同,但是具体原因究竟是什么呢?
我用这个签名加密方法,如何让api调用者能够在正确的json string上进行签名加密呢?