开发google搜索算法 authenticator时,算法是不是要和app内部的算法一致

用户名:rfyiamcool
文章数:156
评论数:1797
访问量:1720333
注册日期:
阅读量:1297
阅读量:3317
阅读量:581024
阅读量:465233
51CTO推荐博文
请多多关注我的个人博客,前沿:&&&&&&&&在腾讯,百度,阿里,360运维人员登录堡垒机,或者是单点登录引导的各种运维平台,好多都需要用动态口令令牌的,用rsa的多点,这栋系价格不便宜,国内也有些便宜的,一些游戏公司的将军令就是从国内x厂商定制买的,有兴趣的可以搜搜,价格还算可以,给你提供服务端的一些源码,让你方便的使用。当然了,并不是每个公司都会这玩意感兴趣的,咋办? &不知道大家有没有用过 支付宝、dnspod、yy的电子口令,每30s换一次密码。dnspod、yy手机令牌貌似用的是google的token方案。下图就是各大公司在用的rsa口令牌 !650) this.width=650;" src="/wyfs02/M02/29/CB/wKiom1N-4-Djs3UdAADJAsCxyM0176.jpg" title="rsa.jpg" alt="wKiom1N-4-Djs3UdAADJAsCxyM0176.jpg" />一些基于TOTP、HOTP算法的app !650) this.width=650;" src="/wyfs02/M00/29/CC/wKioL1N-5Pvi9KGpAAJUCz1xe80650.jpg" title="qq_rsa.jpg" alt="wKioL1N-5Pvi9KGpAAJUCz1xe80650.jpg" />说点让人烦躁的介绍:otp是什么知道么? &是一次性密码,简单的说,totp是基于时间的,htop是基于次数的。Google Authenticator这个开源的项目实现了基于时间的一次一密算法,也就是Time-based One-time Password (TOTP),这个是客户端的实现。同时在GitHub上有服务器端的实现。大家在github厘搜搜,不管是几乎任何语言的totp hotp的实现方式都有的,拿来就能用。下面是使用一次一密基本的步骤:1. &在服务器端对每个用户生成一个密钥SecretKey,这个密钥对于每个用户是不同的。2. 用户在自己的手机上安装Google Authenticator。第一次使用这个系统的时候,将密钥输入到Google Authenticator。这里有两种输入方式,可以手动的输入,也可以由系统生成二维码,Google Authenticator可以直接扫描二维码来读取密钥信息和帐号信息。同时可以设置一些参数,比如一次一密的长度(默认为6),时间步长(默认为30s)等。3. &Google Authenticator每隔一段时间为系统自动生成一个新的密码。系统验证的时候,用户输入Google Authenticator中的数字密码来验证。这里的一次一密的原理是这样的。首先是对于同一个用户,服务器和Google Authenticator这个客户端共享了一个密钥SecretKey,二是服务器和Google Authenticator有相同的时间。(在我们的平台中怎么用到, 比如单点登录的时候,除了帐号密码,还需要一个口令卡,这看起来是不是很酷。 当时如果你的口令牌没有拿,放到家里了,除了呵呵,也可以走自动申请流程的方式让管理员暂时去除对你的 口令认证。个人觉得在权限管理接口上,如果集成口令,是一件很爽的事情, 比如你申请改密码,我不需要重新给你发短信,你只要有口令就好了。 不多说了,他的好处还是不少。他的缺点也显而易见,麻烦。。。。。 &是推动这件事,麻烦。 &在技术上其实没啥难度,毕竟大点的互联网都集成了单点登录,我只需要在单点登录加个对比就行了。&)原文:http://rfyiamcool./6189650) this.width=650;" src="/wyfs02/M01/29/CE/wKioL1N-7C3SamL-AAICLZrnADM050.jpg" title="163_meitu_1.jpg" alt="wKioL1N-7C3SamL-AAICLZrnADM050.jpg" />Google Authenticator会基于密钥和时间计算一个HMAC-SHA1的hash值,这个hash是160 bit的,然后将这个hash值随机取连续的4个字节生成32位整数,最后将整数取31位,再取模得到一个的整数。这个就是Google Authenticator显示的数字。在服务器端验证的时候,同样的方法来计算出数字,然后比较计算出来的结果和用户输入的是否一致。使用这两个来完成一次一密确实很方便的,大家可以尝试用googe Authenticator 代替手机短信来实现一次一密的方法。 一个能让运维平台更安全,更时髦的方法,就这么出来了。 &文章有些原理没有描述清晰,请见谅。这篇主要是介绍篇,如果大家有兴趣,我再写写服务器端的一些操作。本文出自 “” 博客,谢绝转载!
了这篇文章
类别:┆阅读(0)┆评论(0)
15:21:37 22:01:18 11:43:36 02:23:45Google账户两步验证是如何工作的?
00%-14%-30%-55%62%-70%-78%-88%
我们往往会在不同的网站上使用相同的密码,这样一旦一个网站账户的密码泄露,就会危及到其他使用相同密码的账户的安全,这也是最近的密码泄露事件造成如此大影响的原因。为了解决这个问题,一些网站在登录时要求除了输入账户密码之外,还需要输入另一个一次性密码。银行常用的动态口令卡就是这种一次性密码的例子,在线支付网站的一次性短信密码则是另一种实现。
Google现在也推荐用户启用(Two-step verification)功能(Youtube上的),并且除了以短信或者电话的方式发送一次性密码之外,还提供了另一种基于时间的一次性密码(Time-based One-time Password,简称TOTP),只需要在手机上安装密码生成应用程序,就可以生成一个随着时间变化的一次性密码,用于帐户验证,而且这个应用程序不需要连接网络即可工作。仔细看了看这个方案的实现原理,发现挺有意思的。下面简单介绍一下。
Google的两步验证算法源自另一种名为HMAC-Based One-Time Password的算法,简称HOTP。HOTP的工作原理如下:
客户端和服务器事先协商好一个密钥K,用于一次性密码的生成过程,此密钥不被任何第三方所知道。此外,客户端和服务器各有一个计数器C,并且事先将计数值同步。
进行验证时,客户端对密钥和计数器的组合(K,C)使用(Hash-based Message Authentication Code)算法计算一次性密码,公式如下:
HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))
上面采用了HMAC-SHA-1,当然也可以使用HMAC-MD5等。HMAC算法得出的值位数比较多,不方便用户输入,因此需要截断(Truncate)成为一组不太长十进制数(例如6位)。计算完成之后客户端计数器C计数值加1。用户将这一组十进制数输入并且提交之后,服务器端同样的计算,并且与用户提交的数值比较,如果相同,则验证通过,服务器端将计数值C增加1。如果不相同,则验证失败。
这里的一个比较有趣的问题是,如果验证失败或者客户端不小心多进行了一次生成密码操作,那么服务器和客户端之间的计数器C将不再同步,因此需要有一个重新同步(Resynchronization)的机制。这里不作具体介绍,详情可以参看RFC 4226。
介绍完了HOTP,Time-based One-time Password(TOTP)也就容易理解了。TOTP将HOTP中的计数器C用当前时间T来替代,于是就得到了随着时间变化的一次性密码。非常有趣吧!
虽然原理很简单,但是用时间来替代计数器会有一些特殊的问题,这些问题也很有意思,我们选取几个进行一下探讨。
首先,时间T的值怎么选取?因为时间每时每刻都在变化,如果选择一个变化太快的T(例如从某一时间点开始的秒数),那么用户来不及输入密码。如果选择一个变化太慢的T(例如从某一时间点开始的小时数),那么第三方攻击者就有充足的时间去尝试所有可能的一次性密码(试想6位数字的一次性密码仅仅有10^6种组合),降低了密码的安全性。除此之外,变化太慢的T还会导致另一个问题。如果用户需要在短时间内两次登录账户,由于密码是一次性的不可重用,用户必须等到下一个一次性密码被生成时才能登录,这意味着最多需要等待59分59秒!这显然不可接受。综合以上考虑,Google选择了30秒作为时间片,T的数值为从Unix epoch(日 00:00:00)来经历的30秒的个数。
第二个问题是,由于网络延时,用户输入延迟等因素,可能当服务器端接收到一次性密码时,T的数值已经改变,这样就会导致服务器计算的一次性密码值与用户输入的不同,验证失败。解决这个问题个一个方法是,服务器计算当前时间片以及前面的n个时间片内的一次性密码值,只要其中有一个与用户输入的密码相同,则验证通过。当然,n不能太大,否则会降低安全性。
事实上,这个方法还有一个另外的功能。我们知道如果客户端和服务器的时钟有偏差,会造成与上面类似的问题,也就是客户端生成的密码和服务端生成的密码不一致。但是,如果服务器通过计算前n个时间片的密码并且成功验证之后,服务器就知道了客户端的时钟偏差。因此,下一次验证时,服务器就可以直接将偏差考虑在内进行计算,而不需要进行n次计算。
以上就是Google两步验证的工作原理,推荐大家使用,这确实是保护帐户安全的利器。
TOTP: Time-based One-time Password Algorithm, RFC Draft,&http://tools.ietf.org/id/draft-mraihi-totp-timebased-06.html
HOTP: An HMAC-Based One-Time Password Algorithm, RFC&4226,&http://tools.ietf.org/html/rfc4226
Google Authenticator project,&&
(本节转自:& )
实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。
目前客户端有:
android版:&
用户需要开启Google Authenticator服务时
1.服务器随机生成一个类似于『DPI45HKISEXU6HG7』的密钥,并且把这个密钥保存在数据库中。
2.在页面上显示一个二维码,内容是一个URI地址(otpauth://totp/账号?secret=密钥),如『otpauth://totp/?secret=DPI45HCEBCJK6HG7』,下图:
3.客户端扫描二维码,把密钥『DPI45HKISEXU6HG7』保存在客户端。
用户需要登陆时
1.客户端每30秒使用密钥『DPI45HKISEXU6HG7』和时间戳通过一种『算法』生成一个6位数字的一次性密码,如『684060』。如下图android版界面:
2.用户登陆时输入一次性密码『684060』。
3.服务器端使用保存在数据库中的密钥『DPI45HKISEXU6HG7』和时间戳通过同一种『算法』生成一个6位数字的一次性密码。大家都懂控制变量法,如果算法相同、密钥相同,又是同一个时间(时间戳相同),那么客户端和服务器计算出的一次性密码是一样的。服务器验证时如果一样,就登录成功了。
1.这种『算法』是公开的,所以服务器端也有很多开源的实现,比如php版的:&。上github搜索『Google Authenticator』可以找到更多语言版的Google Authenticator。
2.所以,你在自己的项目可以轻松加入对Google Authenticator的支持,在一个客户端上显示多个账户的效果可以看上面android版界面的截图。目前dropbox、lastpass、wordpress,甚至vps等第三方应用都支持Google Authenticator登陆,请自行搜索。
3.现实生活中,网银、网络游戏的实体动态口令牌其实原理也差不多,大家可以自行脑补下,谢谢。
(本节转自:
上一篇:下一篇:
评论功能关闭
根据国家法律法规要求,本站暂时关闭文章评论功能。开放时间不确定。我们将谋求一种可以让大家更好的发表意见的方式。
根据国家法律法规要求,只有实名认证后才可以发表评论。
原理篇 我们往往会在不同的网站上使用相同的密码,这样一旦一个网站账户的密码泄露,就会危及到其他使用相同密码的账户的安全,这也是最近的密码泄露事件造成如此大影响的原因。为了解决这个问题,一些网站在登录时 ...
分享到微信
打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。
请将我们加入您的广告过滤器的白名单,请支持开源站点。谢谢您。google authenticator android下载|google authenticator安卓版下载3.0.0手机版_西西软件下载
西西软件园多重安全检测下载网站、值得信赖的软件下载站!
相关软件 /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /英文/顶好评:50%踩坏评:50%请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
13.1M/中文/9.8
8.3M/中文/9.9
7.2M/中文/10.0
12.7M/中文/7.5
google authenticator安卓版是一款基于谷歌账号而开发的安全验证软件,在google authenticator安卓版中用户可以开启两部验证的方法来登录账号,从而降低安全风险,有需求的用户不妨下载google authenticator安卓版体验体验一番!
google authenticator安卓版介绍:
Google 身份验证器与两步验证功能配合,可在您登录 Google 帐户时为您平添一重安全保障。启用两步验证之后,当您登录帐户时,需要提供密码和此应用生成的验证码。配置完成后,无需网络连接或蜂窝连接即可获得验证码。
google authenticator安卓版功能包括:
- 通过 QR 码自动设置- 支持多帐户登录- 支持基于时间和基于计数器生成验证码
google authenticator安卓版相关:
要使用 Google 身份验证器,需要先为您的 Google 帐户启用两步验证。访问 /2step 即可立即启用。
安卓官方手机版
IOS官方手机版
手机加密软件可以帮助大家管理自己的隐私,手机中总有一些机密文件,或者私人图片等信息,如果发生手机遗失
中文 / 738KB 手机文件加密工具是一个非常方便的手机小工具,可以增强我们手机的安全度,让自己的隐私得到保障。
中文 / 2.1M 相信每一个人的手机中,总会有那么一些内容,不想让其他的人看到。但是仅仅只用手机锁是无法做到严密地保护我们隐私的,那么我们就需要其他一些辅助工具来帮忙了。图库锁就是这样一款能够帮助你保护手机内隐秘图片的
中文 / 3.4M 微锁app是一款安卓手机加密类应用,应用的手势密码锁方便、安全。只要设置密码,将重要的图片,视频等文件在微锁这里加密,再也不怕被别人窃取你的隐私了!欢迎有需要的朋友前来下载这款app软件功能1、应用锁2、保险
中文 / 1.4M 相信许多人在使用手机的时候都担心过手机中的账号信息以及其他文件的安全问题。由于手机时随身携带的,一旦丢失或者落到其他人手里,那就可能引发众多的后果。如果你经常为此烦恼的话,那就来试试这款一密钥吧!它
中文 / 992KB MR文件加密安卓版是一款手机文件加密软件,虽然手机安装保护软件有一定的保障,但是一些重要文件夹我们还是可以使用到文件加密软件来达到双重保险的效果,特别是自己的一些隐私东西怕被别人看到,比如一些好看的电影
中文 / 9.4M 360加密邮手机版今天发布了,360加密邮基于国家密码管理局颁发的SM9加密方式,能够为每个邮箱可以设置单独的“安全密码”。只需在邮件发送时选择“加密发送”就会自动为邮件加密,而邮件接收者必须凭“安全密码”才能
google authenticator安卓版 3.0.0手机版
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。【谷歌中国(Google)软件开发工程师面试】算法,算法,数据结构,数据结构。 刷题吧骚年-看准网
谷歌中国(Google)
门户网站/搜索引擎
公司地址 北京中关村清华东门附近的清华科技园C座公司介绍
谷歌中国(Google)软件开发工程师面试经验详情
难度一般,leetCode中等到难的题目之间的水平,主要是看...
或,让我们更懂你,就能更多帮到你
面试结果:面试未通过
面试难度:困难
面试感受:很好
按职位查看谷歌中国(Google)面试
更多软件开发工程师面试经验
面试地点:搜狗-北京
第一轮上来就是两道算法题,一个不会。然后面试官直接走了,我也...
面试结果:面试未通过
面试难度:有难度
面试感受:不好
面试地点:搜狐-北京
1.位置随便不便,不过公司环境好;2.笔试题很基础,最后大题...
面试结果:感觉靠谱
面试难度:一般
面试感受:一般
面试地点:搜狐-北京
先简单介绍,然后问几个问题,然后二轮技术主管面,然后lead...
面试结果:面试通过
面试难度:有难度
面试感受:很好
面试地点:搜狗-北京
让做一点题,因为是第一次很差劲,而且没有接触过。讨论完题之后...
面试结果:面试未通过
面试难度:巨难
面试感受:不好
面试地点:搜狐-北京
刚进搜狐媒体大楼,还是很气派的,比较正规,HR给了手环,带到...
面试结果:面试通过
面试难度:有难度
面试感受:很好
在谷歌中国(Google)工作过么?
给TA打个分吧!
来自销售顾问面试
来自测试工程师面试
来自Java面试
来自iOS面试
来自产品经理面试
来自客户经理面试
来自产品经理面试
来自软件研发工程师面试
来自安全工程师面试
来自软件研发工程师面试
来自产品经理面试
¥15800月平均工资
高于同行业
来自 143职业,384员工分享
平均¥20000
来自134员工分享
平均¥14500
来自12员工分享
平均¥26720
来自10员工分享
来自7员工分享
来自6员工分享
来自5员工分享
来自5员工分享
来自5员工分享
来自4员工分享
来自4员工分享
向该公司老鸟提问
1回答 · 4关注
3回答 · 5关注
1回答 · 1关注
2回答 · 4关注
4回答 · 4关注
3回答 · 5关注
1回答 · 3关注
1回答 · 2关注
1回答 · 4关注
3回答 · 3关注
看了该公司的还看了
小贴士:问题描述的越清楚,越能吸引老鸟来回答哟~
请输入问题
谷歌中国(Google)面经:想知道谷歌中国(Google)怎么样?看准网()免费提供谷歌中国(Google)招聘、谷歌中国(Google)工资、谷歌中国(Google)面试、评价、工作环境招聘及员工等Google谷歌的信息。
关注看准官方微信
下载看准官方APP
关注看准官方微信
下载看准官方APP
找工作,下载「看准APP」
23982 位HR实时在线
订阅公司信息
订阅成功!
向老鸟咨询
把你关于谷歌中国(Google)的问题大胆的提出来,这里的363位老鸟很乐意为你解答~
写下问题吧~
提交成功!请静静等待老鸟们回答~
扫描二维码分享到朋友圈,邀请微信好友帮忙解答
下载看准APP
立享畅读全站爆料这是我的个人博客,但我期待你的参与...MSN:(将#改成@)
google authenticator 一次性验证码TOTP java 代码实现
作者:yihaomen 日期:
越来越多的应用系统,开启了双重因子验证,最典型的就是银行,在交易的时候,还会发送给你一个验证码,一般通过短信方式,这个验证码是一次性验证码,而且一般有效期很短, 这就是一个典型的OTP, 关于OTP 的算法有很多种,这里是用的google authenticator, 基于时间的OTP, 所以也叫TOTP. google authenticator 是开源的,可以下载代码参考。我这里主要是想如果要改成自己的用的OTP, 需要服务端也能实现类似的算法。所以在github 上找到了这个开源的东西。以后难得去找,这里把代码整理在这里下载: 其他参考文章:[RFC6238]: [gauth]: [tgb]: [serviceLoader]: [SecureRandom]: [sr-algorithms]: #SecureRandom[githubIssues]:
| 查看次数: -
游客发言不需要密码.
禁止表情转换
禁止自动转换链接
禁止自动转换关键字
虽然发表评论不用注册,但是为了保护您的发言权,建议您.

我要回帖

更多关于 authenticator app 的文章

 

随机推荐