GeXiangDong

精通Java、SQL、Spring的拼写,擅长Linux、Windows的开关机

0%

小程序传给后端的iv只有15个byte的问题

微信小程序获得iv, sessionkey 后传递给后端API,然后解密用户信息等敏感信息,有时解密时报错,说iv只有15个byte的问题(应该是16个)。

这是由于小程序段获得的iv是base64 encode之后的,其中可能含有“+”,+通过url参数直接传递,到服务端后,会被当作空格,空格base64.decode后会少一位,变成了15位。

要得到正确的iv,需要小程序传递前先转义,再传递才行。

1
url = "xxx?iv=" + encodeURIComponent(iv)

encryptedData也需要类似的处理。

这样才不会被认作空格,认作空格后,base64.decode会少一位。