我们在 iOS 上遇到了 Google Authenticator 的问题。我们正在使用以下标准代码片段来生成 TOTP 密钥
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(keySize);
byte[] byteKey = keyGen.generateKey().getEncoded();
Base32 base32 = new Base32();
return base32.encodeAsString(byteKey);
生成的代码在末尾用尾随 = 符号填充,如下所示。
6ICU5K45MHIZCMTR3DABCDFP7XSZGV4DVTRABCOPD5RDQRGOLTGQ====
然后我们会根据这个字符串生成一个合适的二维码,但是在某些设备上扫描它时会出现问题。此代码在 Android 上使用 Google Authenticator 工作,但在使用 iOS 版本时失败,并出现以下错误...
无效的条形码
条形码 'otpauth://totp/MyDomain:user@user.com?secret=6ICU5K45MHIZCMTR3DABCDFP7XSZGV4DVTRABCOPD5RDQRGOLTGQ%3D%3D%3D%3D&issuer=MyDomain' 不是有效的身份验证令牌条形码。
如您所见,尾随 = 填充被编码在秘密字符串中,这似乎会导致 iOS 上的错误。不知道为什么这在 iOS 上失败,但在 Android 上却没有,但这是我们需要添加的
这是 GA GitHub 上的一个老问题,似乎是同一个问题,但没有解决方案...... https://github.com/google/google-authenticator/issues/267
&这里有人通过在编码之前播种字符串来解决问题,但这 在Apple设备上的Google Authenticator上面的场景中不起作用,某些秘密无效
关于为什么或解决问题的可能方法的任何想法?