模拟银行动态口令生成
一、OTP算法
如今动态口令算法采用一次性口令算法,即 O T P OTP OTP(One-Time Password Algorithm), 银行使用的动态口令令牌使用的算法是 O T P OTP OTP中的一种类型,称之为: T O T P TOTP TOTP(Time-Based One-Time Password Algorithm) — 时间同步型动态口令。
二、模拟思路
1. 原理图
动态口令动态口令生成与时间有关系,绘制一个简单的原理图如下
2. 原理图解释
用户端我们有一个内置加密算法的动态令牌,初始密钥和当前时间因子共同作为加密算法的参数进行加密得到伪随机数,然后截取其中特定六位作为令牌产生的6位动态口令。
服务器端与用户端共享初始密钥,以及通过网络时间同步的方式获取相同的时间因子,并采用同一种加密算法得到相应伪随机数,最后通过与用户端采用相同的剪裁方式得到6位口令,最后进行验证,以便提供正确的服务。
三、模拟
1. 思路
在此提供一种编程思路:
初始化一个密钥(Key),程序获取当前系统时间并转换为以分钟为单位的时间因子T,形如201701011920代表2017年01月01日19时20分,将Key与T做拼接然后调用一个MD5加密算法得到一个值(Byte类型),然后将Byte类型值每一个Byte转为相应十进制值,并将得到的所有十进制数作
拼接得到伪随机数R,最后取R的前六位作为动态口令。注意设置60s即一分钟的定时器,因为口令只维持一分钟,然后随机产生。
2. 实现
分别在客户端(可用APP实现)与服务器端(可用网页实现)实现相同的算法,即可完成验证。
获取服务端模拟代码,可关注公众号【考拉技术研究所】
–>“资源分享”
模拟银行动态口令生成相关推荐
- 银行动态口令令牌工作原理简析
RSA SecurID SID700是当前市面上流行使用的动态口令令牌. 种子文件 用户从银行获取的动态口令令牌卡,其内部存储着一份与银行服务器完全一致的种子文件(即图中钥匙所代表的seed),种子文 ...
- mysql 动态口令_RSA令牌动态口令生成原理
RSA是一种国际上通用的非对称算法,主要是提供双因素认证功能.即把密码拆分成两部分,一部分是用户设置的固定密码,另外一部分来自每个用户发放的可显示数字的硬件.该硬件基于时间.设备号和种子数计算出一个动 ...
- R语言对布丰投针(蒲丰投针)实验进行模拟和动态可视化生成GIF动画
最近我们被客户要求撰写关于动态可视化的研究报告,包括一些图形和统计输出. 介绍 布丰投针是几何概率领域中最古老的问题之一.它最早是在1777年提出的.它将针头掷到有平行线的纸上,并确定针和其中一条平行 ...
- 使用google身份验证器实现动态口令验证
最近有用户反应我们现有的短信+邮件验证,不安全及短信条数限制和邮件收验证码比较慢的问题,希望我们 也能做一个类似银行动态口令的验证方式.经过对可行性的分析及慎重考虑,可以实现一个这样的功能. 怎么实现 ...
- 【密码产品篇】动态口令系统密钥体系结构(SM3、SM4)
[密码产品篇]动态口令系统密钥体系结构(SM3.SM4) 动态口令是一种一次性口令机制,用户无须记忆口令,也无须手工更改口令.口令通过用户持有的客户端器件生成,并基于一定的算法与服务端形成同步,从而作 ...
- 动态口令设计系列一:基于共享密钥的动态口令方案
2019独角兽企业重金招聘Python工程师标准>>> 由于传统的静态口令存在容易泄露(输入型泄密.传输型泄密.共享型泄密.记录型泄密.时间越长泄密危险性越高)且一旦泄露全线崩溃.不 ...
- 宁盾动态口令技术案例 - 运用动态令牌dKey T6加强ERP登录安全
一.方案背景 ERP 系统就像企业的 " 黑匣子 " ,内部涵盖了应用企业最关键和最敏感的信息资源. ERP 的特点是大而全,使用者可以从中寻找出一个企业的组织架构.管理理念.客户 ...
- 使用otp动态口令ssh登录linux
linux上各应用的权限认证使用pam机制(http://www.linux-pam.org/ https://github.com/linux-pam/linux-pam ). 这里需要一个支持ot ...
- 动态口令(OTP,One-Time Password)原理与实践(TOTP)
TOTP:Time-Based One-Time Password Algorithm,基于时间同步的一次性口令,动态口令 技术标准:https://tools.ietf.org/html/rfc62 ...
最新文章
- 整理了 65 个 Matplotlib 案例,这能不收藏?
- java h5获取ip,websocket中获取客户端通信的真实IP
- java字符串根据空格截取并存进list,并在每个元素前后加上/
- javascript tabIndex属性
- PC 平台上的一种快速 Red Hat Linux 安装方法
- android edittext不可复制_【EditText】Android设置EditText不可编辑 | 学步园
- u盘如何安装2003服务器系统安装,u盘怎么安装win server2003系统是iso
- “无法移动文件 无法读源文件或磁盘”解决方法
- matlab结构数组22,matlab结构数组
- html加减乘除除数不能为零,如何用正则表达式表示除数不为0 呢
- 《Cocos Creator游戏实战》实现微信小游戏的截图,预览和相册保存功能
- 一篇博客解决网线挑选问题
- 一堂难忘的计算机课作文,难忘的一堂课作文7篇
- linux查不到 隐藏目录,linux查询系统所有隐藏档案(不包括目录)的命令
- 汽车导航系统升级包2023年1月16日
- 英语学习六大原则(转)
- python代码求立方根
- wincc调用软键盘的几种方法
- Modelsim do文件和批处理文件的使用
- JAVAJ2ME贪吃蛇游戏的设计
热门文章
- 解决孩子上课走神的好办法,99%的家长还不知道!
- socket仿qq聊天工具(一)(扩展博客)
- 挺难过的,测完后发现自已有点色盲--色盲、色弱测试图
- iOS 全新的联系人与联系人UI框架
- java中的批处理_Java中的批处理
- 【C++】多态(万字详解) —— 条件 | 虚函数重写 | 抽象类 | 多态的原理
- 从零开始做量化(2)
- 预览后缀名为dwg的文件
- 如何用大数据驱动开一家赚钱的奶茶店
- 【论文翻译】YOLOv2:YOLO9000_Better, Faster, Stronger