生成和验证hotp和totp令牌的模块

onetimepass的Python项目详细描述


版本

当前开发版本:onetimepass-master.tar.gzotp-status-dev

变更日志

VersionDateChanges
1.0.12015-07-31
  • fixed tests and build system,
  • extended test coverage with Py3.5, PyPy and PyPy3,
1.0.02015-07-31
  • skipping spaces if they are given in secret,
  • test suite made more reliable,
0.3.02014-08-16
  • configurable digest method,
  • configurable token length,
  • configurable TOTP interval length,
0.2.22013-07-12
  • license clarification,
  • removal of compiled documentation from the sources,
0.2.12013-07-12
  • support for unicode secrets,
  • preliminary support for Travis CI,
0.2.02013-04-11
  • added compatibility with Python 3.x,
  • removed compatibility with Python 2.5 and earlier,
0.1.22013-01-23
  • added automated case fold to secret,
0.1.12013-12-20
  • internal code improvements,
  • documentation,
0.1.02011-12-19(initial public release)

什么是一次性通过

onetimepass(实际上是onetimepass)是用于生成一次性的模块 密码,即hotps(基于hmac的一次性密码)和totps(基于时间的密码 一次性密码)。它们在google authenticator应用程序中使用。 适用于Android或iPhone。

如何安装

要安装库,可以使用pip,也可以下载它 另外。在pip中安装最简单。假设您正在安装 整个IT系统:

$ sudo pip install onetimepass

(如果在virtualenv中安装,则不需要“sudo”部分)。

或者,您可以按照上面的下载链接,在一些 目录,或者将其作为git子模块克隆到自己的目录 目录。

如何使用一次通过

您可以按以下方式使用此模块:

  1. 安装模块(将其下载到应用程序的目录或模块中 目录)

  2. 要获取基于时间的令牌,可以这样调用它:

    import onetimepass as otp
    my_secret = 'MFRGGZDFMZTWQ2LK'
    my_token = otp.get_totp(my_secret)
    

注意

my_secret不区分大小写,也忽略空格。这意味着你 可以为用户提供更具可读性的机密表示 (例如mfrg gzdf mztw q2lk而不是MFRGGZDFMZTWQ2LK)并传递它们 未更改为库。同样适用于其他接受 这个图书馆。

  1. 要获得基于hmac的令牌,可以这样调用它:

    import onetimepass as otp
    my_secret = 'MFRGGZDFMZTWQ2LK'
    my_token = otp.get_hotp(my_secret, intervals_no=3)
    

    其中intervals_no是当前试用的编号(如果选中 服务器,您必须检查几个值,高于上一个值 成功,为以前成功的身份验证确定)。

  2. 要检查基于时间的令牌,可以这样调用它:

    import onetimepass as otp
    my_secret = 'MFRGGZDFMZTWQ2LK'
    my_token = 123456 # should be probably from some user's input
    is_valid = otp.valid_totp(token=my_token, secret=my_secret)
    
  3. 要检查基于hmac的令牌,可以这样调用它:

    import onetimepass as otp
    my_secret = 'MFRGGZDFMZTWQ2LK'
    my_token = 123456 # should be probably from some user's input
    last_used = 5 # store last valid interval somewhere else
    is_valid = otp.valid_hotp(token=my_token, secret=my_secret, last=last_used)
    

    其中:

    • last参数(在本例中是赋值的last_used)是 上次成功检查的间隔数(作为 valid_totp()将跳过它并从下一个间隔开始检查 数字)
    • is_valid被赋值为False,如果my_token没有 已识别为给定机密(my_secret)的有效OTP并已检查 间隔范围。如果成功,is_valid被分配一个 工作间隔编号(应保存到 数据库,并在下次 正在检查密码,因此不能再次使用同一令牌)。

许可证

此库的许可证位于LICENSE.rst文件中 目录。提供联机版本here

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java需要设置框架。可设置大小(false)以重新绘制()   java我对PDF文件感到困惑   为什么是太阳。jvm。热点。调试器。DebuggerException:无法打开二进制文件`?   设置结果为textview时出现java空指针异常   我应该使用什么同步原语在Java中实现事件驱动程序框架?   java为什么WindowClosing处理程序在退出程序之前不执行后台任务?   如何将“20170712T18:43:04.000Z”转换为安卓或java中的相对时间?   Java,获取按键的时间长度,currentTimeMillies()始终为24   maven构建的java可执行Jar找不到logback。xml   java在其外部的函数中使用for循环中的值   java如何以表格格式将不同长度的数据对齐   java Play 2.5 WebSocket连接构建   maven而非eclipse的java强制转换问题   java如何在JFreeChart中使X轴上的值水平?   构建Java Windows应用程序以访问在线MySQL数据库需要什么   java添加构造函数会出错吗?这没有道理,请帮忙,编程问题   java在一个jframe中的两个JPanel中使用两个绘制方法   java数学或逻辑问题   java如何复制Androids库存摄像头方向更改