跳转到主要内容

简单易用的受密码保护的数据。

项目描述

https://img.shields.io/pypi/v/privy.svg?style=flat-square https://img.shields.io/travis/ofek/privy/master.svg?style=flat-square https://img.shields.io/codecov/c/github/ofek/privy/master.svg?style=flat-square https://img.shields.io/pypi/pyversions/privy.svg?style=flat-square https://img.shields.io/pypi/l/privy.svg?style=flat-square

Privy是一个小型且快速的实用工具,用于保护诸如API密钥、加密货币钱包或数字签名种子之类的秘密数据。

目录

使用方法

例如,如果您正在使用GnuPG。您即将签署一条消息,但首先需要您的密码。您的密码成为实例化您的私钥的输入吗?不,它首先通过一个安全的密钥派生函数进行哈希。然后这个哈希成为对称加密算法(如AES)的输入,该算法然后解密您的存储私钥。这就是Privy所做的工作。

别担心!使用Privy,这变得极其简单

>>> import privy
>>>
>>> # 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,并支持Python 2.7、3.3+、PyPy和PyPy3.3-5.5+

$ pip install privy

加密方案

使用Fernet协议加密机密。具体来说,它使用AES进行加密,并内置使用HMAC的认证。用于加密的私钥是通过密钥派生函数从密码派生的。使用的密钥派生函数是Argon2,这是密码哈希竞赛的获胜者。支持Argon2i和Argon2d变体。

加密格式

ascii(Argon2算法 || 安全级别 || base64(salt) || base64(Fernet令牌))

API

有2个函数:hidepeek

hide

hide(secret, password, security=2, salt=None, server=True)

使用password加密secret。以unicode返回隐藏的机密。

  • 参数

    • secret (bytes) - 要加密的机密。

    • password (bytesunicode) - 用于访问机密的密码。

    • security (int) - 一个介于0到20之间的数字。更高的值更安全,但计算速度较慢,内存使用量较大。请参阅安全级别

    • salt (bytes) - 用于密码哈希的盐。默认为os.urandom(32)

    • server (bool) - 如果True,则假设需要保护旁路攻击,因此将使用Argon2i算法。否则,将使用Argon2d算法对密码进行哈希。

peek

peek(hidden, password, expires=None)

使用password解密hidden。以bytes返回机密。

  • 参数

    • hidden (bytesunicode) - 要解密的隐藏机密。

    • password (bytesunicode) - 用于访问机密的密码。

    • expires (int) - 允许的最大秒数(自加密以来)。默认无过期时间。

如果密码错误,密码用于尝试不同的隐藏机密,或者自加密以来的秒数大于expires参数,将引发ValueError

安全级别

所有预期时间都是基于在Intel Core i7-2670QM @ 2.2 GHz上对256 KiB机密进行解密时的测试结果。

这是命令,其中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)"

级别

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 MiB, t=10

9秒

9

m=1 GiB, t=10

12.2秒

10

m=2 GiB, t=20

48秒

用于用户的机器

11

m=3 GiB, t=30

107

12

m=4 GiB, t=40

?

13

m=5 GiB, t=50

?

14

m=6 GiB, t=60

?

15

m=7 GiB, t=70

?

16

m=8 GiB, t=80

?

17

m=9 GiB, t=90

?

18

m=10 GiB, t=100

?

19

m=11 GiB, t=110

?

20

m=12 GiB, t=120

?

许可证

Privy根据以下条款之一进行分发

由您选择。

变更日志

强调重要变更。

6.0.0

  • 破坏性更改:已删除对Python 3.3的支持。

5.0.0

  • 破坏性更改:Privy现在根据MIT和Apache v2.0许可证条款双许可。

  • 现在在根命名空间中公开了文档化的方法hidepeek

  • Travis现在使用最新版本的PyPy和PyPy3运行测试。

  • 文档的改进。

4.0.0

  • 重大变更:为了更合理的兼容性,安全级别7现在使用512 MiB的RAM,而不是448 MiB。

  • 对文档的重大改进。

3.0.0

  • 添加了安全级别11-20。这些级别非常消耗资源,因此仅适用于个人使用。

2.0.1

  • 重大变更:由于用户请求,加密格式现在使用URL安全的base64代替十六进制。

1.0.0

  • 初始发布

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅生成分发存档的教程

构建分发

privy-6.0.0-py2.py3-none-any.whl (14.2 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者