今天做了一个谷歌身份证器 一次性密钥,在安桌手机上都没问题,但客户把密钥在苹果手机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 字母表
符号   符号   符号   符号
0 A 8 I 16 Q 24 Y
1 B 9 J 17 R 25 Z
2 C 10 K 18 S 26 2
3 D 11 L 19 T 27 3
4 E 12 M 20 U 28 4
5 F 13 N 21 V 29 5
6 G 14 O 22 W 30 6
7 H 15 P 23 X 31 7
填充 =      

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

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

  1. 使用google authenticator(谷歌身份验证器)打造用户登录动态口令

    google authenticator php 服务端 使用php类 直接下载 https://github.com/PHPGangsta/GoogleAuthenticator/raw/maste ...

  2. Google authenticator 谷歌身份验证,实现动态口令

    Google authenticator 谷歌身份验证,实现动态口令 google authenticator php 服务端 使用PHP类 require_once '../PHPGangsta/G ...

  3. 如何为SSH登录建立双因子验证机制(谷歌身份验证器)?

    前言 默认情况下,SSH已经在远程机器之间使用安全的数据通信;但是如果你想为自己的SSH连接添加另外某种安全层,可以添加谷歌身份验证器(Google Authenticator)双因子验证模块,该模块 ...

  4. 【SpringBoot】61、SpringBoot中使用谷歌身份验证器(Google Authenticator)实现二步身份验证

    Google 身份验证器 Google Authenticator 是谷歌推出的基于时间的一次性密码 (Time-based One-time Password,简称 TOTP),只需要在手机上安装该 ...

  5. 使用C++实现谷歌身份验证器(Google Authenticator)

    使用C++实现谷歌身份验证器(Google Authenticator) 本机环境: windows10 x64位运行环境 1.进入网站:http://slproweb.com/products/Wi ...

  6. 使用谷歌身份验证器(Google Authenticator)保护你的后台

    为何要使用谷歌身份验证器 普通的网站只使用账号.密码.图形验证码进行后台登录.根据我(作为站长)多年的经验来看,这种方式安全性很低,尤其是使用 http 协议,明文的帐号和密码相当于在网络上裸奔.如果 ...

  7. Google Authenticator windows client 谷歌身份验证器 windows 电脑端

    谷歌身份验证器现在有安卓客户端和ios客户端,本人开发了一个windows客户端,基于 .NETFramework v4.7 开发,已在 github 上开源,可以在 github 上直接下载. gi ...

  8. 使用谷歌身份验证器增强SSH安全

    一般大家都是使用账号和密码远程SSH登录管理服务器.但SSH账号和密码很容易泄露,或者经常遭遇暴力破解.咨询过前同事赛赛,他们目前使用了谷歌身份验证器.查看了谷歌身份验证器的github和其它网上文档 ...

  9. 二次验证码小程序与谷歌身份验证器不同点是?

    名称1[二次验证码]小程序 名称2 谷歌身份验证器(Google Authenticator) 粗略对比两个产品异同 [二次验证码]小程序 搜索:微信搜索.微信目前65个小程序入口,倒是容易找到它 使 ...

  10. 谷歌身份验证器代码实现

    手机下载谷歌身份验证器,无需联网也可以用. 工具类 public class GoogleAuthenticator{// 生成的key长度( Generate secret key length)p ...

最新文章

  1. 艾伟:正则表达式30分钟入门教程
  2. 【Irrlicht鬼火引擎】 安装配置Irrlicht鬼火引擎
  3. Loadrunner中socket协议中的三个关联函数
  4. P3246 [HNOI2016]序列 莫队 + ST表 + 单调栈
  5. 使用Javaslang进行Java 8中的函数式编程
  6. cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...
  7. html 流程控制,HTML5独家分享:原生JS学习笔记2——程序流程控制
  8. 高可用集群原理概念详述
  9. mt3dgis 视频教程
  10. 怎样运行python_怎样运行python
  11. 数学建模——数据包络分析步骤及程序详解
  12. 【 jvm-sandbox-repeater】环境搭建部署
  13. Mesos-安装和使用
  14. 安卓一键清理内存_雨点清理app下载-雨点清理官方版下载v1.0
  15. 生活污水处理厂工程脱水车间设计、果汁饮料厂工艺流程及车间平面布置CAD设计、水处理车间工艺图、氯乙烯分离车间平面布置图、乳品车间设备布置图、核桃乳饮料厂工艺流程及车间平面布置CAD设计……
  16. 【操作系统】判断题汇总大全
  17. linux服务器被挖矿的解决办法
  18. uniapp——漂亮的按钮,圆角view,渐变色view,圆角边框view,点击效果波动、点击放大效果
  19. 【ROS】2.2 信息、类和服务器
  20. 关于我国电子商务立法的思考

热门文章

  1. Spring @Value 用法
  2. 解决:tomcat部署遇到问题:One or more Filters failed to start. Full details will be found in the appro
  3. 如何完整删除Windows.old(详细教程)
  4. Java实现手机登录功能
  5. 2015关于第十一届蓝狐网络杯湖南省大学生计算机程序设计竞赛的总结
  6. biostar handbook(十一)|基因组变异的表示形式
  7. base64和jpg/png互转
  8. Unity笔记之UGUI Text首行缩进、改变文本颜色、文本间距调节
  9. Android 获取应用「唯一标识符」——DeviceID「兼容android 10(Q)」
  10. DP转HDMI方案|CS5216方案应用|CS5216设计方案