Google Authenticator(谷歌身份验证器)在苹果手机上IOS系统中 输入密钥时提示密钥无效的解决方案 您所在的位置:网站首页 苹果手机密码与安全性获取验证码 Google Authenticator(谷歌身份验证器)在苹果手机上IOS系统中 输入密钥时提示密钥无效的解决方案

Google Authenticator(谷歌身份验证器)在苹果手机上IOS系统中 输入密钥时提示密钥无效的解决方案

2024-07-14 02:54| 来源: 网络整理| 查看: 265

今天做了一个谷歌身份证器 一次性密钥,在安桌手机上都没问题,但客户把密钥在苹果手机IOS系统时提示 :提示密钥无效

如密钥如下

ABSGIYLENVUW4QDHNVQWS3BOMNXW2=== 

此密钥在安卓系统可以添加,在IOS系统上提示无效,经百度,原来是两个系统对一些编码解析不一样导致的。

原文如下:

I was having the same issue as above. It turns out that Google Authenticator doesn't like = signs in the IPhone App, but doesn't complain in Android.

In my case I increased the length of the string before encoding to base32 from 8 chars to 10 chars. This removed the three === at the end of the string. I found this online as to why = signs appear in base32 encoded strings:

意思是苹果系统IOS对===不识别,解决办法,把它去了就行了,去了符号"==="并不影响密钥的使用。“=”此符号只是为了格式化用的,大多情况下无意义,可以去了。

Base32将任意字符串按照字节进行切分,并将每个字节对应的二进制值(不足8比特高位补0)串联起来,按照5比特一组进行切分,并将每组二进制值转换成十进制来对应32个可打印字符中的一个。

由于数据的二进制传输是按照8比特一组进行(即一个字节),因此Base32按5比特切分的二进制数据必须是40比特的倍数(5和8的最小公倍数)。例如输入单字节字符“%”,它对应的二进制值是“100101”,前面补两个0变成“00100101”(二进制值不足8比特的都要在高位加0直到8比特),从左侧开始按照5比特切分成两组:“00100”和“101”,后一组不足5比特,则在末尾填充0直到5比特,变成“00100”和“10100”,这两组二进制数分别转换成十进制数,通过上述表格即可找到其对应的可打印字符“E”和“U”,但是这里只用到两组共10比特,还差30比特达到40比特,按照5比特一组还需6组,则在末尾填充6个“=”。填充“=”符号的作用是方便一些程序的标准化运行,大多数情况下不添加也无关紧要,而且,在URL中使用时必须去掉“=”符号。

扩展知识 

Base32编码是使用32个可打印字符(字母A-Z和数字2-7)对任意字节数据进行编码的方案,编码后的字符串不用区分大小写并排除了容易混淆的字符,可以方便地由人类使用并由计算机处理。

RFC 4648 Base32 字母表 值符号 值符号 值符号 值符号0A8I16Q24Y1B9J17R25Z2C10K18S2623D11L19T2734E12M20U2845F13N21V2956G14O22W3067H15P23X317填充=   

Base32将任意字符串按照字节进行切分,并将每个字节对应的二进制值(不足8比特高位补0)串联起来,按照5比特一组进行切分,并将每组二进制值转换成十进制来对应32个可打印字符中的一个。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有