https://www.cnblogs.com/fireway/p/5860622.html
MD5/SHA1 都是散列Hash,DST端收到文件/数据以后,自行计算得到Hash值,与SRC端传递过来的Hash值比较,如果一致,说明文件/数据是完整,且没有经过篡改的,注意这个只是验证数据完整性。
很多网站会用例如下列的签名方式,里面用了hmac-sha1,这个与sha1的区别是输入了一个key,这个key是网站预选分配给客户端的,使用key进行加密/Hash,这样服务器端不光是验证数据完整性,同时还能验证数据的有效性。
Authorization = "OSS " + AccessKeyId + ":" + Signature
Signature = base64(hmac-sha1(AccessKeySecret,
VERB + "\n"
+ Content-MD5 + "\n"
+ Content-Type + "\n"
+ Date + "\n"
+ CanonicalizedOSSHeaders
+ CanonicalizedResource))
BASE64是什么?
将HEX的byte进行6bit->8bit的转换,就是3个字节24个bit,变成4个字节32个bit,为什么做这个?
因为8bit字节的字符当中会有一些不可见字符,例如空格/回车等等,传递到url的字符串当中的话,会出现问题,所以使用ABCD…abcd…1234…等64个可见字符来进行转换表示,字符串长度会变长,也没有加密效果,只是为了字符串可见。