美文网首页iOS开发技术分享iOS第三方库程序员
iOS 动态口令,动态密码生成(OTP)

iOS 动态口令,动态密码生成(OTP)

作者: 小虎哥 | 来源:发表于2016-12-08 17:02 被阅读1153次

简单的DEMO实现

  • 简介:
    OTP全称叫One-time Password,也称动态口令,是根据专门的算法每隔60秒生成一个与时间相关的、不可预测的随机数字组合,每个口令只能使用一次,每天可以产生43200个密码。
Snip20161208_9.png

这里用的是Google的开源代码 用到了OTPGenerator和TOTPGenerator两个类

实现方案:客户端跟服务器端必须需要统一的Secret,加密算法(algorithm),统一的时间(基于时间戳,这里可以设置容错时间)

- (id)initWithSecret:(NSData *)secret
           algorithm:(NSString *)algorithm
              digits:(NSUInteger)digits
              period:(NSTimeInterval)period;
- (NSString *)generateOTPForDate:(NSDate *)date;//生成的动态码
  • 实现代码
//这里的date需要跟服务器一致 (这里time我使用了随机数,为了生成不同动态码)
- (NSString *)addOTPWithTimeLag:(NSInteger)time {
    NSData *secretData = [secret dataUsingEncoding:NSASCIIStringEncoding];
    TOTPGenerator *generator = [[TOTPGenerator alloc]         initWithSecret:secretData
                                  algorithm:kOTPGeneratorSHA1Algorithm
                                     digits:6
                                     period:60];
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:time];
    NSString *str = [generator generateOTPForDate:date];
    while (str.length < 6) {
        str = [NSString stringWithFormat:@"0%@",str];
    }
    return str;
}

具体实现看XHGOTPDEMO

相关文章

  • iOS 动态口令,动态密码生成(OTP)

    简单的DEMO实现 简介:OTP全称叫One-time Password,也称动态口令,是根据专门的算法每隔60秒...

  • iOS OTP 基于谷歌身份验证器

    iOS OTP (Authenticator) 前言:最近需要做一个生成动态码,类似于QQ安全中心的动态码,30秒...

  • 手机动态口令

    一.什么是OTP和TOTP OTP全称叫One-time Password,也称动态口令,是根据专门的算法每隔60...

  • Seego后台谷歌验证使用说明

    什么是谷歌验证? 谷歌验证(Google Authenticator)是一款动态口令生成工具,可在IOS、安卓应用...

  • ios动态口令的生成。(TOTP算法)

    1.动态口令的生成,现在都是基于谷歌的开源。具体的实现可以参考这个链接。https://www.jianshu.c...

  • 动态密码代码类记录

    前言 动态密码,也可以称为一次性密码(One Time Password,OTP),大部分情况下都是可以随着一个变...

  • 动态口令基本分类

    动态口令,又叫动态令牌、动态密码。它的主要原理是: 用户登录前,依据用户私人身份信息,并引入随机数产生随机变化的口...

  • 谷歌身份验证器,为你的账户加把锁|币评君

    什么是谷歌身份验证器?谷歌验证器是一款动态口令工具,工作原理类似短信动态验证,绑定后每30s生成一个动态验证码。 ...

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

    背景 前两天项目有个类似动态口令的功能要实现,团队最终决定使用OTP算法来实现:前端先向后端请求获取用户的密钥(s...

  • iOS 的动态性

    原文:iOS面试题大全 iOS 的动态性来自三个方面:动态类型、动态绑定、动态载入、SEL类型①、动态类型<弱类型...

网友评论

  • zrasd:哥们请叫个问题啊,第一次生成口令,怎么判断口令的有效期呢
    小虎哥:我记得是在 秒为00时开始变化的 加一个定时器刷新页面看下
  • 被风吹乱的思念:打扰问一下,60秒失效后,谷歌有回调吗刷新吗
    小虎哥:@2236d903e7a2 我记得是在 秒为00时开始变化的 加一个定时器刷新页面看下
    zrasd:怎么判断口令的有效时间呢
    小虎哥:我用的时候是添加定时器刷新的
  • CoderRocker_Axl:你好,请问为什么每天只能有43200个密码呢?
  • chaox:怎么和用户id结合呢
    小虎哥:用户id还有其他信息生成Secret

本文标题:iOS 动态口令,动态密码生成(OTP)

本文链接:https://www.haomeiwen.com/subject/zsjsmttx.html