libriciel/php-password

PHP库,用于计算密码的强度和熵,并生成随机密码。

3.0.1 2023-02-23 15:49 UTC

This package is not auto-updated.

Last update: 2024-09-19 23:12:50 UTC


README

PHP库,用于计算密码的强度和熵,并生成随机密码。

背景

我们想要防止未经授权的人在我们的应用程序中进行身份验证。

  • 通过测试密码的暴力破解
  • 或访问存储在数据库中的密码

需求

库的使用

示例

密码强度(根据ANSSI)
use Libriciel\Utility\Password\PasswordStrengthMeterAnssi;

$pwdStrengthAnssi = new  PasswordStrengthMeterAnssi();
// L'entropie, ici 61
$pwdStrengthAnssi->entropy('mot de passe');

// La force (entre 1, très faible et 5, très fort), ici 1
$pwdStrengthAnssi->strength('mot de passe');
随机密码生成

用例是创建一个随机密码,存储为哈希和盐的组合,用于通过密码重置邮件的链接(具有在URL中随机生成的另一个值)而无需写入密码。

默认情况下,生成的密码使用的是Latin-1中最常用的62个数字和字母:0到9,a到z和A到Z。

默认生成长度为40的密码,对应于熵为238的5级强度。

我们永远不能确定是否具有配置的每个字符类中的字符!

在最坏的情况下,如果生成了0000000000000000000000000000000000000000,则强度为1,熵为40。

use Libriciel\Utility\Password\PasswordGeneratorAnssi;

// Configuration complète par défaut
$config = [
    'binary'  => false,
    // de 0 à 9
    'numbers'  => true,
    'lowercase_hexadecimal' => false,
    'uppercase_hexadecimal' => false,
    // de a à z
    'lowercase_letters' => true,
    // A à Z
    'uppercase_letters' => true,
    'symbols_1' => false,
    'symbols_2' => false,
    'lowercase_accents_fr' => false,
    'uppercase_accents_fr' => false
];

$pwdGeneratorAnssi = new PasswordGeneratorAnssi();
// Exemple de sortie: MUAVGHF4O5VPDboTwSJebjwNcryqYmRSS2izJHyJ
$pwdGeneratorAnssi->generate();

密码示例

0或1(二进制)的2个符号

  • 非常弱,0 <= 熵 < 64,少于64个字符:00111
  • 弱,64 <= 熵 < 80,64到79个字符:1001011011110111000001110111000001111000000100111000101110011110
  • 中等,80 <= 熵 < 100,80到99个字符:11110001011001110010111100111100011001100001101001100100111110011011111100001000
  • 强,100 <= 熵 < 128,100到127个字符:0100010111111110101100011111100110110111011000111100110100100011110101111101001010000111100101111010
  • 非常强,128 <= 熵,多于127个字符:00110010011111110111011000101111011111100110000010100110000011001001110110110011011011110100110111100010000101001010101010001110

0到9的10个符号(十进制)

  • 非常低,0 <= 熵 < 64,少于20个字符: 54612
  • 低,64 <= 熵 < 80,20到24个字符: 96442571499252715213
  • 中等,80 <= 熵 < 100,25到30个字符: 5478444456254874224762975
  • 高,100 <= 熵 < 128,31到38个字符: 7241455799436811802114240877052
  • 非常高,128 <= 熵,超过38个字符: 375112021368327243201601633713856751474

16个符号0到9和A到F(十六进制编码)

  • 非常低,0 <= 熵 < 64,少于16个字符: 870E0
  • 低,64 <= 熵 < 80,16到19个字符: 6A183F3AE2B00906
  • 中等,80 <= 熵 < 100,20到24个字符: 65C88BAED3D6ECC0B705
  • 高,100 <= 熵 < 128,25到31个字符: 61ABB6F019F76328F0D62C267
  • 非常高,128 <= 熵,超过31个字符: D9DA43DA38F70012416EF268A86A7E8B

26个A到Z的符号(字母编码)

  • 非常低,0 <= 熵 < 64,少于14个字符: JQMVC
  • 低,64 <= 熵 < 80,14到17个字符: BLMQNYZLABYOIC
  • 中等,80 <= 熵 < 100,18到21个字符: PHUAZZNJLOIYFHPHCA
  • 高,100 <= 熵 < 128,22到27个字符: KSFUNDDVTJWHHPKGXUNZJB
  • 非常高,128 <= 熵,超过27个字符: YFJRELLOVUQQUOUAGWLIHXXQIWKU

36个符号0到9和A到Z(字母数字编码)

  • 非常低,0 <= 熵 < 64,少于13个字符: 1UGQN
  • 低,64 <= 熵 < 80,13到15个字符: Z7L14FUEP48KK
  • 中等,80 <= 熵 < 100,16到19个字符: OOF5WYZW1PDGRNQW
  • 高,100 <= 熵 < 128,20到24个字符: Q6H3E9SUPB5N4Q830KCM
  • 非常高,128 <= 熵,超过24个字符: 8HSTJHN4X13EEF87A457QZ6FK

52个A到Z和a到z的符号

  • 非常低,0 <= 熵 < 64,少于12个字符: lrPju
  • 低,64 <= 熵 < 80,12到14个字符: WSRuLKnVgzik
  • 中等,80 <= 熵 < 100,15到17个字符: IOxQLzDMvtkGGJq
  • 高,100 <= 熵 < 128,18到22个字符: FKCaVbPwSMEjaETgqG
  • 非常高,128 <= 熵,超过22个字符: edYwUOyseOFvMckpBAWcpqs

62个符号0到9,A到Z和a到z

  • 非常低,0 <= 熵 < 64,少于11个字符: YqSp4
  • 低,64 <= 熵 < 80,11到13个字符: 8Z8pwoUtXAJ
  • 中等,80 <= 熵 < 100,14到16个字符: V4d1zH3em5BVMn
  • 高,100 <= 熵 < 128,17到21个字符: d3qe2nfe8S417Kd35
  • 非常高,128 <= 熵,超过21个字符: 4rVeh6NoPV3X0DzvhFs9tL

70个符号0到9,A到Z,a到z和!#$*% ?

  • 非常低,0 <= 熵 < 64,少于11个字符: 8P$uw
  • 低,64 <= 熵 < 80,11到13个字符: 6jmw8fYf%M8
  • 中等,80 <= 熵 < 100,14到16个字符: 8€rSvNuXCk1YTj
  • 高,100 <= 熵 < 128,17到20个字符: %?a3M!UT?XMQBNqfx
  • 非常高,128 <= 熵,超过20个字符: zLpQrNdC!qj!mRdjtPW€54612

90个符号9,A到Z,a到z和!#$*% ?&[|]@^µ§ :/;.,<>°²³

  • 非常低,0 <= 熵 < 64,少于10个字符: tJ?Ve?9&²g
  • 低,64 <= 熵 < 80,10到12个字符: %46°QxY§#v
  • 中等,80 <= 熵 < 100,13到15个字符: a1t^Ywpj5 ;€o
  • 强,100 <= 熵 < 128,16到19个字符:V&j8oTQ&Ah§AµK4#
  • 非常强,128 <= 熵,超过19个字符:KW6 F§9b/x²O&A*Fv€er[

文档

链接

开发

构建一个完全准备好的Docker环境

docker-compose build
docker-compose run app bash