离线付款码的实现
程序员文章站
2022-07-07 10:26:48
...
1、 服务器生成唯一token,通过加密方式(如https)传递到客户端。
2、 打开付款码时,本地生成一段含有token与当前时时间戳的哈希值,如sha1(token+UnixTimestamp),转换为byte[]并截取指定长度后转换为int变量otp。
3、 用户账号(手机号)为int变量id。
付款码=TOTP * 质数 + 用户ID
质数取值需要大于最大用户ID,如:当前系统设计最大承受用户有9900人,则质数可以设定必须大于9900的数值(9991).
用户ID = 付款码 % 质数 “%”表示取余
TOTP=付款码 / 质数 当付款码除质数后取整,则该数值为当前付款码中的OTP。