1

我们在 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上面的场景中不起作用,某些秘密无效

关于为什么或解决问题的可能方法的任何想法?

4

1 回答 1

1

以防万一其他人遇到这个问题,我猜他们会给出问题出在 iOS Google Authenticator 上,我通过用基本 32 个可编码字符替换尾随 = 字符来解决问题

于 2018-04-17T09:45:27.603 回答