⑴ TOTP基本原理
TOTP 是Time-based One-Time Password的简写,表示基于时间戳算法的一次性密码。 是时间同步,基于客户端的动态口令和动态口令验证服务器的时间比对,一般每60秒,或30秒产生一中族个新口令,要求客户端和服务器能够十分卖枝弊精确的保持正确的时钟,客户端和服务端基于时间计算的动态口令才能一致。
K,密钥串 HMAC-SHA-1, 表示使用SHA-1做HMAC(当然也可以使用SHA-256等)
C,基于时间戳计算得出,通过定义纪元(T0)的开始并以时间搭辩间隔(TI)为单位计数,将当前时间戳变为整数时间计数器(TC)
Truncate,是一个函数,用于截取加密后的字符串
T,当前的时间戳 T0,起始时间,一般为0 T1,时间间隔,根据业务需要自定义
python实现
上面的代码就是我基于python3的实现(可以保存为totp.py),散列算法使用的是SHA-256,使用方式如下: