Skip to main content

用于以机器可读格式表示密码策略的库。还支持根据策略验证密码并估计在给定策略下创建的密码强度。

项目描述


标题:密码策略库 API 布局:页面

该库提供了密码组合策略的机器可读表示。该库的最终目标是允许网站上传策略描述,然后让密码生成器下载并使用这些描述生成合规密码。

政策说明

使用以下对象PCPPCPRulePCPSubsetRequirement和定义策略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。尝试创建最简洁的表示。传递**kwargsjson.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 查看哈希

已上传 source

内置分布

password_policy-0.2.0-py3-none-any.whl (17.1 kB 查看哈希

已上传 py3