微信小程序解密encryptedData 報錯:pad block corrupted 解決方法

今天在開發小程序獲取微信綁定的手機號時遇到異常:javax.crypto.BadPaddingException: pad block corrupted

折騰半天,突然想到是因為:

  1. 先通過getPhoneNumber獲取了手機號的加密數據。
  2. 然后才調用的wx.login獲取code。
  3. 再通過code取到用戶的session_key 。
  4. 最后再用session_key,手機號的加密數據和向量解密獲取手機號。

正確的做法應該是:

  1. 先才調用的wx.login獲取code
  2. 然后再通過code取到用戶的session_key 。
  3. 再通過getPhoneNumber獲取了手機號的加密數據。
  4. 最后再用session_key,手機號的加密數據和向量解密獲取手機號。

改完之后果然沒有問題。


這是因為調用了wx.login后通過code獲得的session_key是新的session_key.

所以,在調用wx.login之前獲的加密數據不是用新得session_key加密的數據。

在調用wx.login之后獲得的加密數據,才是新得的session_key加密的數據。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容