
文章目录双因子认证(多因子认证)otp算法(ONE-TIME PASSWORD)otp算法大概分为几部otp的机制服务端客户端(app端)两种主流算法otp流程图otp是通用的吗otp验证码如何允许多人添加如果不小心删除令牌了怎么办?不同账号验证码为什么不一样手机验证码天天在用但是居然不知道这个是otp伤自尊了必须弄清原理。先要知道几个概念。双因子认证(多因子认证)这个比较好理解账号密码认证是最基础的认证。再加一层手机otp认证就是双因子认证。如果还有其他认证就叫多因子认证。otp算法(ONE-TIME PASSWORD)一次性算法otp算法大概分为几部密钥生成密码生成otp的机制服务端保存账号、密钥、客户等信息。当您需要绑定时会将上述信息以二维码的形式展现出来。客户端(app端)客户端扫描二维码主要是密钥、账号及客户名称等信息。这样就在app端添加一条对应记录。因为算法是一致的所以 密钥计数器 算出的结果也会一致。这样app端获取到的验证码发给服务器验证一致就会通过登录成功。注发现了吧因为密码等信息都在二维码上也就是说谁获取到了二维码就相当于具有了获取验证码的能力。所以一定要妥善保管二维码如果泄露了他人就有能力来登录了。两种主流算法1、totp基于时间的算法主流。基于时间主要是解决计数器问题而基于时间做计数器非常方便例如以30s为步长当前时间毫秒数/30就可以作为计数器的值。既方便还有一定的容错即使差个一两秒问题也不大。2、hotp基于hashcode的算法。(这个用的不多基于时间的用的多)otp流程图otp是通用的吗是通用的实现otp功能的app不只一个。如freeotpgoogle身份验证器身份宝实际上都是可以的但是双因子客户一般会推荐一个那就按推荐的来吧也没任何问题。otp验证码如何允许多人添加一般来说绑定一次后下次就不会出现二维码了而是验证码输入框。如果要多人添加扫描二维码时多人一起扫扫的人都能拿到信息就实现了多人添加。如果不小心删除令牌了怎么办?正常来说只要绑定了就不会要求扫码。1、找管理员重置绑定2、第一次扫描时保存图片 # 这种一般只适合第一次短时间内多人共扫如果想存下来万一丢了码再重扫是没用的因为大概率过期了。不同账号验证码为什么不一样既然计时器都是采用时间计时器那么这个值是相同的。但是不同账号的验证码要尽量不同否则两个不同账号的验证码都相同那就没有任何意义了。猜测下大概是根据用户的hascode等生成一个随机基数再加上计数器这样不同用户重复的概率很低基本满足了要求。