pooldberry的python包装poly1305_donna

poly1305_donna的Python项目详细描述


Py_Poly1305_唐娜

Poly1305多纳叉子 (https://github.com/floodyberry/poly1305-donna)添加python包装 作为扩展模块

什么是hmac(基于散列的消息身份验证代码)?

来自维基百科 (https://en.wikipedia.org/wiki/Hash-based_message_authentication_code):

在密码学中,密钥哈希消息验证码(HMAC)是 计算消息身份验证代码的特定构造 (mac)包含密码散列函数和 加密密钥。与任何Mac一样,它可能用于 同时验证数据完整性和 一条信息。任何加密哈希函数,如md5或sha-1,都可以是 用于计算hmac;得到的mac算法是 相应地称为HMAC-MD5或HMAC-SHA1。密码强度 hmac取决于底层散列的加密强度。 函数,其哈希输出的大小,以及 钥匙。

什么是poly1305?

来自http://cr.yp.to/mac.html

poly1305 aes是一种最先进的密钥消息身份验证 适用于各种应用程序的代码。Poly1305 AES计算 任何长度的消息的16字节身份验证器,使用16字节 nonce(唯一消息编号)和32字节密钥。攻击者不能 如果消息发送者发送 身份验证器以及每个消息和消息接收者检查 每个验证者。

许可证:

根据Floodberry的代码许可证,此代码也将发布到 公共领域。请参阅许可证文件。

“floodberry.poly1305_donna”目录包含未修改的 源代码派生自poly1305 donna from https://github.com/floodyberry/poly1305-donna

示例

from poly1305_donna import (
    self_test, get_key, authenticate, verify,
)
print('Power-On Self Test result: ' + str(self_test()))
msg = 'Hello world'
print('\nTest class methods - authenticate, verify')
kr = get_key()
auth = authenticate(kr, msg)

bad_kr = get_key()
bad_msg = msg + '1'
bad_auth = authenticate(kr, bad_msg)

print('Good: %s\nBad auth: %s\nBad kr: %s\nBad msg: %s' % (
    str(verify(auth, kr, msg)),
    str(verify(bad_auth, kr, msg)),
    str(verify(auth, bad_kr, msg)),
    str(verify(auth, kr, bad_msg))
))

或者,运行附带的测试脚本:

python -m poly1305_donna.test

运行一个简单的基准:

python -m poly1305_donna.benchmark

安装

使用pip:

pip install 'git+https://github.com/sundarnagarajan/py_poly1305-donna.git'

使用setup.py:

python setup.py install

构建/安装要求

gnu/linux:

  • python在2.7.6、3.4.3、pypy 2.7.10(pypy 4.0.1)上进行了测试
  • cffi=1.0.0
  • python.h(类debian系统上的libpython dev)
  • GCC(在类似Debian的系统上构建Essential)

注释

py_poly1305_donna不提供用于增量更新和 HMAC计算。

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

推荐PyPI第三方库


热门话题
java什么会导致程序在它似乎拥有的监视器上被阻止?   java Android studio设置视图的背景色   java我可以保存一个文本文件而不给用户修改它的能力吗?   pdfbox PDFBOX2。0:java堆堆栈错误   java是维护和操作AllowList的有效方法   JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/asd性爱   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java调试空指针异常   java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项   java为JPanel设置边框上的笔划   并发@Schedule方法的java行为   如何在Java中使用泛型与语言运算符和泛型类扩展数   java Rhino Javascript如何为异常堆栈跟踪标记字符串源   运行可执行jar时发生java错误,无法找到或加载主类