Python 3 Pasword Hassing Library

wachtwoord的Python项目详细描述


wachtwoord是一个非常简单的python 3特定密码哈希库。 它被写为没有现有的密码哈希库,最值得注意的是 fshppasslibcryhaBcryptor支持python 3。

支持的哈希方案

目前只支持一个特定的哈希方案:PBKDF2

important0.12及以下版本未实现pbkdf2 正确地。这个版本直接从规范中实现pbkdf2 详见RFC2898。通过公开测试对实现进行测试 矢量(RFC6070)

基本用法

因为python 3对unicode之间的区别非常严格 字符串和字节字符串,wachtwoord被设计为提供一个统一的接口 通过要求所有输入都是unicode字符串并将unicode字符串生成为 独家输出。

wachtwoord支持hashlib模块中的所有哈希函数。长度 盐的数量(默认值:32)和迭代次数(默认值:10000)是 可配置。

两种操作模式

Wachtwoord有两种操作模式。小初始化 (可能会失败)与密码散列和 两者都是一次性完成的。前者在使用多个密码时更方便 需要一个接一个的散列。另一个在散列时更方便 是偶然的。

未来对wachtwoord的哈希方案扩展可能会使初始化 部分更贵。对于PBKDF2方案,差别非常小。

分开初始化和散列
>>> from wachtwoord.pbkdf2 import Engine
>>> engine = Engine()
>>> hash_encoded_password = engine.hash('secret_123')
>>> print(hash_encoded_password)
pbkdf2$sha512$10000$2qf1oL9GU0gq+Zf2+vWmuliL0WizwvyFUMWV3jG3o/M=$gzSkk0/WjTHACyaeDBe3czNdI+3iukVUm3f+vzNop2b/LwLQWf0r8WKv1TfzWaqYOnPH8vC3tDTBxdGDzEDYRw==
>>>
>>> is_correct_password = engine.verify('secret_123', hash_encoded_password)
>>> print(is_correct_password)
True
>>>

Engine对象允许设置影响所有 随后生成的哈希。例如,假设我们要使用 sha256hash函数而不是默认的sha512hash函数:

>>> from wachtwoord.pbkdf2 import Engine
>>> engine = Engine(digestmod='sha256')
>>>

同样,如果我们想改变salt的大小和迭代次数,我们会 按如下方式调用引擎:

>>> from wachtwoord.pbkdf2 import Engine
>>> engine = Engine(digestmod='sha256', iterations=20000, salt_size=64)
>>>

一次性初始化和散列化

>>> from wachtwoord.pbkdf2 import hash_password, verify_password
>>> hash_encoded_password = hash_password('secret_123')
>>> print(hash_encoded_password)
pbkdf2$sha512$10000$f6ULrQBJspk6JiwHiEDL8fpFLCf90mOAxAM1LCY4dO0=$xzCLvTdp7eQUuY5pfgFl33dx7/uGIMaeZ5Bm5hmLTMx43zi/OCiNgORRmkb5KfkjxRDkD7VNc/45DbHX1zDhcA==
>>>
>>> is_correct_password = verify_password('secret_123', hash_encoded_password)
>>> print(is_correct_password)
True
>>>

初始化和散列一次完成的事实并不能阻止 我们不更改默认值。我们可以把hash_passwordas 如下:

>>> from wachtwoord.pbkdf2 import hash_password
>>> hash_encoded_password = hash_password('secret_123', digestmod='sha256', iterations=20000, salt_size=64)

名称wachtwoord的来源

wachtwoord是荷兰语密码。

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

推荐PyPI第三方库


热门话题
java编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像