sha256

关于OAuth2.1 PKCE利用crypto的sha256哈希结果转换base64url计算结果不一致的问题(Flutter)

前言

最近在写第三方flutter app并抓包分析某原生app登录逻辑的时候,遇到了使用OAuth2.1 PKCE授权码模式的登录方式,该模式下需要将code_verifier先进行sha256哈希后再进行base64(URL-Save) 编码成最终的code_challenge。

OAuth2.1 PKCE授权码模式详解:https://shanhy.blog.csdn.net/article/details/114080598

code_verifier转code_challenge的工具:https://tonyxu-io.github.io/pkce-generator/

问题详情

  1. 在对code_verifier进行sha256哈希+base64URL编码后,所得结果与预期的完全不一致;在进行初步对比排查后发现是在base64URL这一步骤出现的差异。
  2. 并且在使用各种线上工具对已经sha256哈希后的字符串进行base64URL编码,也与预期结果完全不一致。