什么是TOTP(Time-base One-Time Password)?

Time-base One-Time Password翻译过来是基于时间的一次性密码。这里以QQ令牌为例,解释下TOTP。

  • 首先,当用户首次使用QQ令牌时,服务器会向用户的手机APP上颁发一个证书/秘钥(这里理解为一个长的字符串,设为变量:secret,颁发时间[unix时间戳]记为:createTimestamp),单个临时密码的有效期为30s。
  • 手机APP生成临时密码,记当前手机unix时间戳为:appCurrTimestamp,生成规则为:
//当前步数,30秒为一步
var userId = xx;
var step = (appCurrTimestamp - createTimestamp)/(30*1000);
//生成一个六位密码(这里生成密码的方法大家自己定义,保证安全性就行,核心逻辑是上一步计算步数,保证相同步数生成的密码相同即可)
var tempPass = substr(sha256(userId + secret + step),6);
  • 手机APP将密码发送到服务端验证,记服务端当前时间为:serverCurrTimestamp
//当前用户ID
var currUserId = xx;
//根据当前用户ID查询用户秘钥
var currUserSecret = querySecretByUserId(currUserId);
var step = (serverCurrTimestamp - createTimestamp)/(30*1000);
//生成密码(这里生成密码的方法大家自己定义,保证安全性就行,核心逻辑是上一步计算步数,保证相同步数生成的密码相同)
var serverTempPass =  substr(sha256(currUserId + currUserSecret + step),6);
  • 最后验证手机端的生成的临时密码和server端生成的是否相同即可。

边界情况如何处理?

服务器和手机的时间可能存在时间差(还有网络延迟造成的时间差),为了弥补时间差造成的步数不一致的问题,一般会向前和向后多算一步,只要这三步有一步是符合条件的,则符合条件。

【TOTP】TOTP算法(基于时间的一次性动态密码)原理介绍 简要逻辑实现说明相关推荐

  1. 关于Google身份验证器、基于时间的一次性密码 (TOTP)算法的初步了解

    一.Google Authenticator 1.概述 Google Authenticator是基于双因素身份验证 ( 2FA ) 的应用程序,有助于识别用户身份并确认用户声称自己是谁以及他是否真的 ...

  2. OTP一次性动态密码工具实现

    对于企业内部信息安全或行业安全合规性需求,3A认证.授权.审计是必要的基础安全审查项.认证安全机制要求双因素认证,从技术要可使用基于数字证书和OTP来实现满足. OTP分为两种技术算法HOTP(基于次 ...

  3. OTP一次性动态密码工具Java实现

    一次性密码(英语:One Time Password,简称OTP),又称动态密码或单次有效密码,是指计算器系统或其他数字设备上只能使用一次的密码,有效期为只有一次登录会话或交易.OTP 避免了一些与传 ...

  4. 【TOTP】基于时间的动态密码及其工程实践

    探究了常见的动态密码的实现方式及其底层原理,并基于java做出了工程实践. 文章目录 A.来源于一个现象的好奇 B.2FA C.TOTP 1.什么是TOTP 2.原理详解(基于java-totp项目分 ...

  5. 动态密码卡TOTP算法

    TOTP NET实现:http://googleauthcsharp.codeplex.com/ 引用:http://www.cnblogs.com/wangxin201492/p/5030943.h ...

  6. TOTP动态密码认证功能,让天下无贼!

    据多家媒体报道,勒索500万美元的Darkside病毒是通过泄露的VPN密码进入企业内网的,由此可见使用静态用户名密码的VPN系统存在很大的安全隐患.本文通过对现有的用户认证措施进行分析,论证了使用T ...

  7. 动态密码算法介绍与实现

    动态密码,亦称一次性密码(One Time Password, 简称 OTP),是一种高效简单又比较安全的密码生成算法,在我们的生活以及工作中随处可见,身为开发者,也或多或少在自己的业务系统中集成了二 ...

  8. 动态密码算法介绍与实现 1

    动态密码,亦称一次性密码(One Time Password, 简称 OTP),是一种高效简单又比较安全的密码生成算法,在我们的生活以及工作中随处可见,身为开发者,也或多或少在自己的业务系统中集成了二 ...

  9. 生物识别最新进展:动态密码语音无监督身份认证系统通过科技成果鉴定

    近日,由中国电子学会主持召开的"基于动态密码语音的无监督身份认证系统"科技成果鉴定会在清华大学举办,AI科技大本营受邀出席. 该成果由清华大学.北京得意音通技术有限责任公司共同完成 ...

最新文章

  1. Android Studio对于Java8特性的支持
  2. 程序员的精力呵护指南!来自十年程序员的精力管理经验
  3. poj 1061 青蛙的约会
  4. java mvp模式_MVP模式入门(结合Rxjava,Retrofit)
  5. 【线性代数】矩阵的运算公式速查
  6. 80端口为什么要备案_成都为什么要登记icp备案需要多久
  7. Nifi 数据流整合工具
  8. Thread-Specific Storage Pattern
  9. 如何在 Windows 中删除运行历史记录
  10. 爱思服务器shsh文件类型,爱思服务器查询shsh失败
  11. web——216中安全色
  12. 2021年全球AFM探针收入大约230.8百万美元,预计2028年达到374.9百万美元
  13. Axure8原型设计实战案例:如何设计用户管理,手把手带你学习
  14. 也谈分布式系统中的网络模型和故障模型
  15. 网络天才网页中文版_【网络天才网页版】网络天才最新中文网页版下载v2.2.3-街机中国...
  16. 科学家学习天竺葵特性,研制出用水分子来驱动的微型机器人
  17. redis启动、关闭命令
  18. html5+css搭建一个网页创意画框效果/案例演示
  19. 绿色版本ps cs5 不能复制汉字【解决方法】
  20. 2022年来了,从Python定制一份日历开始吧!

热门文章

  1. vscode中使用tensorboard的坑爹记录
  2. ubuntu18 CUDA版本降级
  3. c++ 函数声明与定义
  4. 如何在C / C ++中不使用分号打印分号(;)?
  5. java复杂map转json_转换复杂的JSON对象为 Map对象
  6. 【python】数据挖掘分析清洗——缺失值处理方法汇总
  7. 洛谷 P1352 没有上司的舞会(树形dp)
  8. BMP文件格式分析(zz)
  9. 在Linux下用tftp刷写路由器固件
  10. 未来超级计算机600字作文,我眼中的未来科技世界