生成和验证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 Slick2D鼠标单击在Windows 10中不起作用   java在多线程中使用titan graph的最佳实践是什么?   java以编程方式访问清单。主类MF   安卓区分对JavaSpring后端的web和本机应用程序请求   java StringTemplate getInstanceOf返回null   java InvalidDataAccessApiUsageException:未找到线程绑定请求:   编码在Java中只对查询键和参数进行url编码的最佳方法是什么?   java如何使用mavenjarplugin从自定义jar文件中排除METAINF文件夹   Java:引发异常后程序未崩溃   安卓如何通过文件名找到/res/raw文件夹中文件的资源id?   html Selenium Java与HTML5的拖放   java是否可以在不同的对象中使用单个输入?   java谷歌应用引擎cron作业后端   java如何将列表项的信息传递给新的列表活动?   java是否可以要求junit在进行测试之前运行一个命令?   在异常中提供附加信息的java可持续方法?   java可编辑JComboBox:使用快捷方式启动操作时获取当前值   java运行时错误“名称错误:applicationarbre/Main”   继承java如何获取超类方法来修改子类字段