我发现 xxx 这边用 base64 的方式用错了
我离xx组之前,跟某A对一个接口,当时他就给我这种错误的方式,我当时就那一个接口,我让他改了,但是他没能明白我说的什么意思,我今天是给某B那边做东西才发现所有接口都是这种方式
就是咱们用 hex 表达的时候,其实是两个字符对应一个字节,比方说单个字母 A
是 41
,Z
是 5A
,空格是 20
所以 md5 用 hex 表达是 32 个字节,但其实二进制(binary)形式是 16 个字节
base64 比 hex 紧凑些,不是二倍而是大约 4/3(1.33)倍
比如 12 个字母 A
binary 就是 12 个 A,AAAA...
占 12 字节
hex 形式,就是 41414141...
占 24 个字节
base64 形式,是 QUFBQUFBQUFBQUFB
,总共 16 个字节,比 hex 短,比 12 个 A 长
咱们的签名,是 sha256 的 base64,我理解这个是为了更短,但弄错了,把 sha256 的 hex 形式给 base64 了,结果这个字符串比 sha256 更长,但是实际跟 sha256 等价的,结果只是增加了麻烦
举个例子
有个 sha256 是 d0772abc3d9adb7ddfa3bdc498aaac92b7a6fc6954744deff6fe9ffb723937c7
正确的 base64 是 0HcqvD2a233fo73EmKqskrem/GlUdE3v9v6f+3I5N8c=
,比原始的短
目前错误的 base64 是 ZDA3NzJhYmMzZDlhZGI3ZGRmYTNiZGM0OThhYWFjOTJiN2E2ZmM2OTU0NzQ0ZGVmZjZmZTlmZmI3MjM5MzdjNwo=
,长到离谱,非常奇怪
我希望能改成正确的 base64,前提是你能明白,你也能跟手下的人讲明白,如果不行,至少可以撤掉 base64,只用 sha256,起码不至于多费个事反而有更多麻烦