微信小程序使用otp算法踩坑总结

背景

前两天项目有个类似动态口令的功能要实现,团队最终决定使用OTP算法来实现:前端先向后端请求获取用户的密钥(secret),将之保存在缓存中,之后前端根据该secret,使用OTP算法中的TOTP方式生成6位动态密码,将6位动态密码传到后台验证。

OTP

1.1 简介

OTP(One-Time-Password):一次性密码,也称为动态口令。是使用密码技术实现的在客户端和服务端之间通过共享密钥的一种认证技术,是一种强认证技术,是增强目前静态密码口令认证的一种非常方便的技术手段,是一种重要的双因素认证技术。

1.2 OTP认证原理

动态口令的基本认证原理是在认证双方共享密钥,也称种子密钥,并使用同一个种子密钥对某一个事件计数、或时间值、或异步挑战数进行密码算法计算,使用的算法有对称算法、HASH、HMAC,之后比较计算值是否一致进行认证。可以做到一次一个动态口令,使用后作废,口令长度通常为6-8个数字,使用方便,与通常的静态口令认证方式类似。

1.3 OTP实现方式

  • 时间同步(TOTP)
  • 事件同步(HOTP)
  • 挑战/应答(OCRA)

本文内容主要是小程序使用OTP算法踩坑总结,不对OTP算法的三种实现方式的工作原理进行详细介绍,有兴趣的朋友自行查找相关资料。

踩坑记录

2.1 后端使用的otp库说明

opt算法有许多现成的库可以直接调用&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值