用于以机器可读格式表示密码策略的库。还支持根据策略验证密码并估计在给定策略下创建的密码强度。
项目描述
标题:密码策略库 API 布局:页面
该库提供了密码组合策略的机器可读表示。该库的最终目标是允许网站上传策略描述,然后让密码生成器下载并使用这些描述生成合规密码。
政策说明
使用以下对象PCP、PCPRule、PCPSubsetRequirement和定义策略PCPCharsetRequirement。还有一个SimplePCP用于创建简单策略的实用程序功能。
简单PCP
SimplePCP是用于创建 PCP 对象的快捷功能。与调用相同PCP([PCPRule(*args, **kwargs)])。
| 争论 | 类型 | 默认 | 描述 |
|---|---|---|---|
| 最小长度 | 整数 | 1 | 密码中必须包含的最少字符数。 |
| 最长长度 | 整数 | 没有任何 | 密码中允许的最大字符数。 |
| max_consecutive | 整数 | 没有任何 | 同一字符连续出现的最大次数。 |
| 禁止字符串 | 集合[str] | 没有任何 | 一组不能出现在密码中的字符串。 |
| 要求 | 列表[整数] | 没有任何 | 必须出现在密码中的字符集列表。 |
| 要求子集 | PCP子集要求 | 没有任何 | 其子集必须出现在密码中的字符集列表。 |
| charset_requirements | dict[str,PCPCharsetRequirement] | 没有任何 | 字符集与该字符集的附加要求之间的映射。 |
五氯苯酚
PCP是所有策略的根类。它包含以下信息。
| 成员 | 类型 | 默认 | 描述 |
|---|---|---|---|
| 字符集 | 字典[str,str] | DEFAULT_CHARSETS |
密码中允许的字符集,分成一个或多个不相交的字符集(简称“charset”)。键是字符集的名称,值是包含构成字符集的字符的字符串。 |
| 规则 | 列表[PCPRule] | 不适用 | 构成策略的规则列表。只要一个规则匹配,该策略就被认为是有效的。至少需要设置一个规则。 |
库提供了两个字符集:
DEFAULT_CHARSETS——包括小写字母(lower)、大写字母(upper)、数字(digits)和符号(symbols)。这使用 pythonstring包中定义的字符集。符号包括标点符号和空格。ALPHABET_CHARSETS— 相同,DEFAULT_CHARSETS只是小写和大写合并为一个字符集(字母表)。
该类PCP还提供了几个实用方法:
validate()->None— 验证策略是自洽的。例如,检查它不需要比它允许的更多的字符。如果它们与策略有问题,则引发异常。dumps(**kwargs) -> str— 将策略转储到 JSON。尝试创建最简洁的表示。传递**kwargs给json.dumps,允许格式化输出。@staticmethod loads(s: str) -> PCP— 从提供的 JSON 加载 PCP 对象。
PCPR规则
PCPRule指定密码必须满足的一项或多项要求才能满足规则。必须满足所有要求才能满足规则。可能的要求是,
| 成员 | 类型 | 默认 | 描述 |
|---|---|---|---|
| 最小长度 | 整数 | 1 | 密码中必须包含的最少字符数。 |
| 最长长度 | 整数 | 没有任何 | 密码中允许的最大字符数。 |
| max_consecutive | 整数 | 没有任何 | 同一字符连续出现的最大次数。 |
| 禁止字符串 | 集合[str] | 没有任何 | 一组不能出现在密码中的字符串。 |
| 要求 | 列表[整数] | 没有任何 | 必须出现在密码中的字符集列表。 |
| 要求子集 | PCP子集要求 | 没有任何 | 其子集必须出现在密码中的字符集列表。 |
| charset_requirements | dict[str,PCPCharsetRequirement] | 没有任何 | 字符集与该字符集的附加要求之间的映射。 |
PCP子集要求
描述子集需求。
| 成员 | 类型 | 默认 | 描述 |
|---|---|---|---|
| 选项 | 集合[str] | 没有任何 | 要使用的字符集列表。如果未设置,则在处理规则时,所有字符集的列表将用于选项。 |
| 数数 | 整数 | 不适用 | 密码中必须包含的最小选项数。需要介于 1(含)和选项数(不含)之间。如果使用子集需求,则必须设置。 |
PCPCharset 要求
特定于映射字符集的要求。
| 成员 | 类型 | 默认 | 描述 |
|---|---|---|---|
| min_required | 整数 | 没有任何 | 指定字符集中所需的最少字符数。 |
| 最大允许 | 整数 | 没有任何 | 字符集中允许的最大字符数。 |
| max_consecutive | 整数 | 没有任何 | 一行中允许的此字符集中的最大字符数。请注意,字符不必相同,只需来自相同的字符集即可。 |
| required_locations | 列表[整数] | 没有任何 | 密码中的哪些位置(0 索引,允许反向索引)必须包含此字符集中的字符。 |
| 禁止位置 | 列表[整数] | 没有任何 | 密码中的哪些位置(0 索引,允许反向索引)不得包含此字符集中的字符。 |
默认字符集
DEFAULT_CHARSETS包含四个字符集:
lower— 小写字母 (a–z)。upper— 大写字母 (A–Z)。digits— 数字 (0–9)。symbols— 所有 ASCII 符号,包括空格。
ALPHABET_CHARSETS包含三个字符集:
alphabet— 小写字母 (a–z) 和大写字母 (A–Z)。digits— 数字 (0–9)。symbols— 所有 ASCII 符号,包括空格。
检查密码
该check_password(password: str, pcp: PCP) -> bool方法可用于根据策略检查密码。True如果密码与策略中的至少一个规则匹配,它将返回,False否则返回。
衡量政策强度
该库提供了两种方法来估计使用给定策略创建的密码强度:
check_machine_strength(pcp: PCP) -> int- 估计密码生成器可以使用给定策略生成的密码数量,假设它生成的密码等于所需的最小密码min_length。check_human_strength(pcp: PCP, preferences: list[str]) -> int— 估计人类使用给定策略创建的密码强度。此方法假定人类将生成与所需的最小密码相等的密码min_length。此外,它假定用户将根据提供的首选项选择字符集(只要策略允许)。如果未设置,首选项默认为['lower', 'upper', 'digits', 'symbols'].
对于这两种方法,返回值都是估计可以生成的密码数量的一半。这样做是因为平均而言,生成的密码会在搜索一半的搜索空间后被猜到。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
password-policy-0.2.0.tar.gz
(15.2 kB
查看哈希)
内置分布
password_policy-0.2.0-py3-none-any.whl
(17.1 kB
查看哈希)