- 浏览: 514851 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (563)
- 工作经验 (12)
- 数据库 (13)
- Servlet (10)
- Struts2 (1)
- Spring (25)
- Eclipse (5)
- Hibernate (5)
- Eclips (8)
- HTTP (7)
- J2EE (21)
- EHcache (1)
- HTML (11)
- 工具插件使用 (20)
- JPA (2)
- 杂谈 (17)
- 数据结构与算法 (3)
- Cloud Foundry (1)
- 安全 (10)
- J2SE (57)
- SQL (9)
- DB2 (6)
- 操作系统 (2)
- 设计模式 (1)
- 版本代码管理工具 (13)
- 面试 (10)
- 代码规范 (3)
- Tomcat (12)
- Ajax (5)
- 异常总结 (11)
- REST (2)
- 云 (2)
- RMI (3)
- SOA (1)
- Oracle (12)
- Javascript (20)
- jquery (7)
- JSP自定义标签 (2)
- 电脑知识 (5)
- 浏览器 (3)
- 正则表达式 (3)
- 建站解决问题 (38)
- 数据库设计 (3)
- git (16)
- log4j (1)
- 每天100行代码 (1)
- socket (0)
- java设计模式 耿祥义著 (0)
- Maven (14)
- ibatis (7)
- bug整理 (2)
- 邮件服务器 (8)
- Linux (32)
- TCP/IP协议 (5)
- java多线程并发 (7)
- IO (1)
- 网页小工具 (2)
- Flash (2)
- 爬虫 (1)
- CSS (6)
- JSON (1)
- 触发器 (1)
- java并发 (12)
- ajaxfileupload (1)
- js验证 (1)
- discuz (2)
- Mysql (14)
- jvm (2)
- MyBatis (10)
- POI (1)
- 金融 (1)
- VMWare (0)
- Redis (4)
- 性能测试 (2)
- PostgreSQL (1)
- 分布式 (2)
- Easy UI (1)
- C (1)
- 加密 (6)
- Node.js (1)
- 事务 (2)
- zookeeper (3)
- Spring MVC (2)
- 动态代理 (3)
- 日志 (2)
- 微信公众号 (2)
- IDEA (1)
- 保存他人遇到的问题 (1)
- webservice (11)
- memcached (3)
- nginx (6)
- 抓包 (1)
- java规范 (1)
- dubbo (3)
- xwiki (1)
- quartz (2)
- 数字证书 (1)
- spi (1)
- 学习编程 (6)
- dom4j (1)
- 计算机系统知识 (2)
- JAVA系统知识 (1)
- rpcf (1)
- 单元测试 (2)
- php (1)
- 内存泄漏cpu100%outofmemery (5)
- zero_copy (2)
- mac (3)
- hive (3)
- 分享资料整理 (0)
- 计算机网络 (1)
- 编写操作系统 (1)
- springboot (1)
最新评论
-
masuweng:
亦论一次OutOfMemoryError的定位与解错 -
变脸小伙:
引用[color=red][/color]百度推广中运用的技术 ...
Spring 3 mvc中返回pdf,json,xml等不同的view -
Vanillva:
不同之处是什么??
Mybatis中的like查询 -
thrillerzw:
转了。做个有理想的程序员
有理想的程序员必须知道的15件事 -
liujunhui1988:
觉得很有概括力
15 个必须知道的 Java 面试问题(2年工作经验)
源:http://www.zhihu.com/question/20462696/answer/18731073?utm_campaign=rss&utm_medium=rss&utm_source=rss&utm_content=title
评:
开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。
实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。
目前客户端有:
android版: Google 身份验证器
iOS版:https://itunes.apple.com/cn/app/google-authenticator/id388497605
实现原理:
一、用户需要开启Google Authenticator服务时,
1.服务器随机生成一个类似于『DPI45HKISEXU6HG7』的密钥,并且把这个密钥保存在数据库中。
2.在页面上显示一个二维码,内容是一个URI地址(otpauth://totp/账号?secret=密钥),如『otpauth://totp/kisexu@gmail.com?secret=DPI45HCEBCJK6HG7』,下图:
3.客户端扫描二维码,把密钥『DPI45HKISEXU6HG7』保存在客户端。
二、用户需要登陆时
1.客户端每30秒使用密钥『DPI45HKISEXU6HG7』和时间戳通过一种『算法』生成一个6位数字的一次性密码,如『684060』。如下图android版界面:
2.用户登陆时输入一次性密码『684060』。
3.服务器端使用保存在数据库中的密钥『DPI45HKISEXU6HG7』和时间戳通过同一种『算法』生成一个6位数字的一次性密码。大家都懂控制变量法,如果算法相同、密钥相同,又是同一个时间(时间戳相同),那么客户端和服务器计算出的一次性密码是一样的。服务器验证时如果一样,就登录成功了。
Tips:
1.这种『算法』是公开的,所以服务器端也有很多开源的实现,比如php版的:https://github.com/PHPGangsta/GoogleAuthenticator 。上github搜索『Google Authenticator』可以找到更多语言版的Google Authenticator。
2.所以,你在自己的项目可以轻松加入对Google Authenticator的支持,在一个客户端上显示多个账户的效果可以看上面android版界面的截图。目前dropbox、lastpass、wordpress,甚至vps等第三方应用都支持Google Authenticator登陆,请自行搜索。
3.现实生活中,网银、网络游戏的实体动态口令牌其实原理也差不多,大家可以自行脑补下,谢谢。
评:
开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。
实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。
目前客户端有:
android版: Google 身份验证器
iOS版:https://itunes.apple.com/cn/app/google-authenticator/id388497605
实现原理:
一、用户需要开启Google Authenticator服务时,
1.服务器随机生成一个类似于『DPI45HKISEXU6HG7』的密钥,并且把这个密钥保存在数据库中。
2.在页面上显示一个二维码,内容是一个URI地址(otpauth://totp/账号?secret=密钥),如『otpauth://totp/kisexu@gmail.com?secret=DPI45HCEBCJK6HG7』,下图:
3.客户端扫描二维码,把密钥『DPI45HKISEXU6HG7』保存在客户端。
二、用户需要登陆时
1.客户端每30秒使用密钥『DPI45HKISEXU6HG7』和时间戳通过一种『算法』生成一个6位数字的一次性密码,如『684060』。如下图android版界面:
2.用户登陆时输入一次性密码『684060』。
3.服务器端使用保存在数据库中的密钥『DPI45HKISEXU6HG7』和时间戳通过同一种『算法』生成一个6位数字的一次性密码。大家都懂控制变量法,如果算法相同、密钥相同,又是同一个时间(时间戳相同),那么客户端和服务器计算出的一次性密码是一样的。服务器验证时如果一样,就登录成功了。
Tips:
1.这种『算法』是公开的,所以服务器端也有很多开源的实现,比如php版的:https://github.com/PHPGangsta/GoogleAuthenticator 。上github搜索『Google Authenticator』可以找到更多语言版的Google Authenticator。
2.所以,你在自己的项目可以轻松加入对Google Authenticator的支持,在一个客户端上显示多个账户的效果可以看上面android版界面的截图。目前dropbox、lastpass、wordpress,甚至vps等第三方应用都支持Google Authenticator登陆,请自行搜索。
3.现实生活中,网银、网络游戏的实体动态口令牌其实原理也差不多,大家可以自行脑补下,谢谢。
发表评论
-
Mysql经mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案
2016-07-06 17:16 2174源:http://www.jb51.net/artic ... -
Shell script: 获取第10+个参数
2015-11-04 14:33 475源:http://www.cnblogs.com/sheldo ... -
no server suitable for synchronization found
2015-10-21 16:15 1028源:http://blog.sina.com.cn/s/blo ... -
nginx超时设置
2015-10-21 14:15 690源:http://www.cnblogs.com/discus ... -
ssh 免密码登录
2015-10-12 11:26 407源:http://chenlb.iteye.com/blog/ ... -
Maven Release Plugin Prepare a Release and create new branch
2015-09-17 15:22 808源:http://maven.apache.org/maven ... -
Centos初始化java环境
2015-09-12 14:31 4951.上传 jdk jdk-7u65-linux-x64.tar ... -
ssh 远程不能执行JAVA启动脚本
2015-09-08 21:17 1297源:http://java.freesion.com/arti ... -
java ImageIO处理图像的封装
2015-09-06 10:17 366源:http://blog.csdn.net/hu_sheng ... -
解决eclipse显示jar源代码中文乱码问题
2015-08-07 16:47 576源:http://wmljava.iteye.com/blog ... -
超漂亮的纯JAVA浏览器(附源码)
2015-08-06 16:42 1203源:http://blog.csdn.net/lxf9601/ ... -
https单向加密与双向加密区别
2015-05-23 11:04 2058源:http://edison0663.iteye.c ... -
quartz的任务调度,同一个任务,在相同的时间被调用了2次
2015-02-11 13:06 640源:http://www.iteye.com/topi ... -
目前常用命令
2015-02-09 20:14 616JSON格式化 http://json.parse ... -
CentOS 中yum命令运行错误解决办法
2015-02-03 14:10 687源:http://blog.sina.com.cn/s/blo ... -
[转]漫谈创业和管理-程序员5大思维障碍
2015-01-29 20:09 677源:http://javatar.iteye.com/blog ... -
win8 如何命令行设置 计划任务
2014-12-18 18:35 854源:http://zhidao.baidu.com/link? ... -
nginx 设置 expires and Cache-Control
2014-12-07 23:53 1154源:http://nginx.org/en/docs/http ... -
Nginx配置proxy_pass
2014-11-30 23:13 589源:http://dmouse.iteye.com/blog/ ... -
data:image/png;base64是什么
2014-11-29 14:38 2682源:http://copier.blog.163.com/bl ...
相关推荐
要实现C#中的谷歌身份验证器功能,首先需要理解其工作原理。谷歌身份验证器使用时间同步的哈希消息认证码(Time-Based One-Time Password, TOTP)算法。TOTP基于当前时间生成一个六位或更多位的动态密码,通常每30秒...
java服务端实现谷歌动态密码验证,包含二唯码字段,阿里身份宝的下载路径为:https://gsf-fl.softonic.com/074/0c4/ea03fa20ed5eec554966a1ceed35593b87/com.google.android.apps.authenticator2.apk?...
winauth是一款专为Windows设计的认证工具,它可以与Google Authenticator结合使用,实现更方便的二次验证。在Windows 10中,winauth能够直接集成到系统右键菜单,让用户在登录各种服务时快速获取验证码。 六、安全...
谷歌身份验证器( Google Authenticator)
public class GoogleAuthenticator { // 生成的 key 长度 public static final int SECRET_SIZE = 10; public static final String SEED = "g8GjEvTbW5oVSV7avL47357438reyhreyuryetredLDVKs2m0QN7vxRs2im5...
Google身份验证器(Google Authenticator)是实现这种安全机制的重要工具,尤其在与GitLab集成时,能为用户提供更高级别的账户保护。 Google Authenticator是一款基于时间同步的一次性密码(Time-Based One-Time ...
Windows 版 Google Authenticator(winAuth)的工作原理与原生的Google Authenticator 应用类似,它可以生成基于时间的一次性密码(TOTP)或基于挑战-响应的二维码。当您将账户添加到 Authenticator 中时,您通常...
GoogleAuthenticator谷歌身份验证器官方最新安卓版.apk
谷歌身份验证器,即Google Authenticator(Google身份验证器)v2.33 谷歌推出的一款动态口令工具,解决大家的google账户遭到恶意攻击的问题。
谷歌验证器是谷歌公司... 不少割韭菜的项目需要使用到谷歌验证器,这个方法可以生成一个验证码(可以把验证码生成一个二维码,这样谷歌验证器就可以扫码直接绑定了),内置一个校验验证码的功能,可以匹配验证的结果。
- `GoogleAuthenticator`:主要类,包含了密钥生成、验证等功能。 - `GoogleAuthenticatorKey`:表示一个账户的密钥信息,包括Base32编码的密钥和QR码字符串。 - `GoogleAuthenticatorCodeValidator`:用于验证...
该脚本还利用了 PHPGangsta 的 Google Authenticator Library PHPGansta Google 身份验证器库 谷歌身份验证器安卓 iOS(iPhone 和 iPad) Windows Phone 如何使用首先,检查脚本。 这就是好东西的地方。 在login....
GoogleAuthenticator, 使用谷歌验证程序应用并检查这里PHP脚本的代码 Google认证器 来自 http://code.google.com/p/google-authenticator/的端口你可以在这里使用谷歌验证程序应用程序来生成一次性密码/令牌,并通过...
google-authenticator-5-10.apk 谷歌身份验证器 更新版本可以扫二维码,安卓版,可以生成动态码
谷歌身份验证器(Google Authenticator)是一款广泛应用于两步验证的安全工具,其源码对于理解和开发类似的移动安全应用具有极高的参考价值。本文将深入探讨这款应用在安卓平台上的实现原理、核心功能及其实现方式。...
Google Authenticator是一款由Google开发的身份验证器应用,它支持基于时间的一次性密码(TOTP)和基于密钥的验证码(HOTP)。这款应用无需网络连接,可以生成动态密码,用于在登录各种服务时进行二次验证,如Gmail...
将一个账号的密码分成两部分,一部分是你的固定口令,另一部分是动态口令,即是一个变化的口令,比如你在...之前我在百度以及其它大厂工作时就是使用这个在本地的PHP服务上直接运行并自动复制,实现迅速登录服务器。
#Google-Authenticator Google身份验证器##用法###步骤1-注册申请$ google = new GoogleAuthenticator ();// Register applicationecho $ google -> getQRCodeUrl ( 'MyApplicationName' );// Save secret Key$ ...
在PHP中接入谷歌验证器类主要是为了实现两步验证或者多因素身份验证(MFA)。谷歌验证器是一种广泛使用的安全工具,它为用户提供了一种额外的安全层,防止未经授权的访问。这种验证方式通常用于增强用户账户的安全性...
谷歌身份验证器,即Google Authenticator(Google身份验证器)v2.33 谷歌推出的一款动态口令工具,解决大家的google账户遭到恶意攻击的问题。在SSH账号和密码之间再增加一个验证码,只有输入正确的验证码之后,再...