密码保护的数据变得简单。

priv的Python项目详细描述


目录

使用方法

例如,假设您正在使用gnupg。你要在一封信上签名,但必须先签名 需要您的密码。您的密码是否成为实例化 私钥?不,它首先由一个安全的密钥派生函数散列。那 散列然后成为对称密码(如aes)的输入,然后解密 您存储的私钥。这就是Privy所做的。

不要害怕!有了私密,这变得非常简单:

>>>importprivy>>>>>># After creating secret, immediately encrypt it using Privy.>>>data=b'secret'>>>>>>hidden=privy.hide(data,ask_for_password())>>>hidden'1$2$fL7xRh8WKe...'

现在您可以安全地存储或传输隐藏的秘密。用户需要时 要再次使用他们的秘密,请询问他们的密码以便查看。

>>>privy.peek(hidden,password)b'secret'

安装操作

Privy在Linux/MacOS和Windows上可用,并支持Python2.7、3.3+、PyPy和PyPy3.3-5.5+。

$ pip install privy

加密方案

秘密使用fernet协议加密。具体来说,它使用aes 加密并具有使用hmac的内置身份验证。用于 加密是从密码中派生出来的,使用a 密钥派生函数 。这个 使用的密钥派生函数是 argon2 ,密码散列的获胜者。 竞争。支持argon2i和argon2d两种变体。

加密格式

ascii(argon2算法安全级别base64(salt)base64(fernet令牌))

API

有两个功能: 隐藏 查看

隐藏

隐藏(secret,password,security=2,salt=none,server=true)

使用密码加密。将隐藏的秘密返回为Unicode。

  • 参数
    • 机密 字节 )-要加密的机密。
    • 密码 字节 Unicode )-用于访问机密的密码。
    • 安全性 int )-包含0-20的数字。更高的值在 计算速度慢和内存使用量大的代价。请参见安全级别。
    • salt 字节 )—用于密码哈希的salt。默认为os.urandom(32)
    • 服务器 bool )-如果 true ,则假定侧信道攻击保护为 需要,因此将使用argon2i算法。否则,密码将 使用argon2d算法进行哈希运算。

偷看

查看(隐藏,密码,过期=无)

使用 密码解密 隐藏的 。将机密返回为 字节

  • 参数
    • 隐藏 字节 Unicode )-要解密的隐藏秘密。
    • 密码 字节 Unicode )-用于访问机密的密码。
    • 过期 int )-加密后的最大秒数 是允许的。默认值为无到期。

如果密码错误,则会引发一个值错误 不同的隐藏机密,或加密后的秒数>; 过期 参数。

安全级别

所有预期的时间都是从英特尔酷睿i7-2670qm@2.2ghz的测试中提取出来的。 256基布的秘密。

这是命令,其中 sl 是所需的安全级别:

$ python -m timeit -s "import privy, os; pw = 'password'; s = os.urandom(1024 * 256); h = privy.hide(s, pw, SL)""privy.peek(h, pw)"
<表> < COLGROUP > < COL/> < COL/> < COL/> < COL/> <广告> 水平 argon2设置 预期时间 注释 < /广告> <正文> 0 m=8 kib,t=1 7毫秒 尽可能低 1 m=4 mib,t=10 54毫秒 > 2 m=8 mib,t=10 99毫秒 默认值 3 m=32 mib,t=10 367毫秒 > 4 m=48 mib,t=10 540毫秒 > 5 m=96 mib,t=10 1.1秒 不错的选择 6 m=256 mib,t=10 3秒 > 7 m=512 mib,t=10 6秒 > 8 m=768兆字节,t=10 9秒 > 9 m=1吉布,t=10 12.2秒 > 10 M=2吉布,T=20 48秒 用于 用户机器 11 m=3吉布,t=30 12 M=4吉布,T=40 ? 13 M=5吉布,T=50 ? 14 M=6吉布,T=60 < >? 15 M=7吉布,T=70 ? 16 M=8吉布,T=80 ? 17 M=9吉布,T=90 ? 18 m=10吉布,t=100 ? 19 m=11吉布,t=110 ? 20 M=12吉布,T=120 ? < > <表>

许可证

私人财产按下列任一条款分配

由您选择。

更改日志

强调重要的变化。

6.0.0

  • 中断: 已放弃对python 3.3的支持。

5.0.0

  • 中断: 根据麻省理工学院和apache v2.0的条款,privy现在是双重授权的。
  • 现在只有文档化的方法 hide peek 才在根命名空间中公开。
  • travis现在使用pypy和pypy3的最新版本运行测试。
  • 文档的改进。

4.0.0

  • 中断: 为了更合理的一致性,安全级别7现在使用512 MIB的RAM,而不是448。
  • 文档的主要改进。

3.0.0

  • 增加了安全级别11-20。这些都是资源密集型的,因此 仅供个人使用。

2.0.1

  • 中断: 由于请求,加密格式现在使用URL安全base64而不是十六进制。

1.0.0

  • 初始版本

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

推荐PyPI第三方库


热门话题
接收com。太阳媒体声音Java中来自MIDI控制器的FastShortMessage,如何解码?   JAVA日志记录:当日志文件将要滚动时,应用程序将暂停   java如何使用循环来重复函数选择   java OpenJPA和存储过程,Weblogic 12c   编码风格什么是正确的方式来使用。Java中的equals方法?   通过tcpsocket将xml从java发送到C#   java对象比JTable效率更高   java在运行时删除标志\半透明\状态   java将一个数均匀随机地分成m个部分   链表的Java数组   javajaxws:在数据库中记录请求和响应   java maven,执行标记,缺少id标记   泛型类中的java泛型转换