本文同步发表于微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新

一、强密码

在密码保险箱强密码填充场景中,强密码是系统推荐用户使用的高强度密码。

强密码的构成

组成 说明
大写字母 A-Z
小写字母 a-z
数字 0-9
特殊字符(可选) !@#$%^&*

特征:强密码中一定包含大写字母、小写字母、数字三种字符,复杂度高,破解难度大。

二、默认强密码规则

当开发中没有指定密码规则,或是指定的密码规则书写错误、不符合规范时,密码保险箱会根据默认规则生成强密码。

默认规则

规则项 默认值 说明
首位字符 字母开头 以任意字母开头
字符类型 包含大写字母、小写字母、数字 不包含特殊字符
密码长度 16位 固定长度16位

默认规则生成示例

  • Abc123Def456Ghi7(16位,包含大小写字母和数字)

三、自定义强密码规则

可以通过设置新密码输入框的passwordRules属性来指定强密码规则。

强密码一定包含大写字母、小写字母、数字三种字符,可以在以下范围内自定义规格。

核心属性

属性 说明 是否必填
begin 指定密码首位的字符类型 可选
special 指定是否包含特殊字符 可选
len 指定密码长度 可选

书写规则

  • 3个属性可以任意选择

  • 书写时顺序不做限制

  • 属性之间以英文逗号"," 进行分隔

  • 每个属性只能出现一次

begin属性

表示生成的强密码首位的字符类型

取值 说明
upper 以大写字母开头
lower 以小写字母开头
digit 以数字开头
不填 以任意字母或数字0-9开头

格式举例

begin:[upper]

注意事项:如果填写了非上表中的指定值,则按默认规则处理。

special属性

表示生成的强密码是否可以包含特殊字符

取值 说明
yes 包含至少一个特殊字符(特殊字符不会出现在首位)
不填 不包含特殊字符

格式举例

special:[yes]

可用的特殊字符

! @ # $ % ^ & *

特殊字符出现位置:不会出现在强密码的首位。

len属性

表示生成的强密码长度。

允许范围

限制 说明
最小长度 12位
最大长度 32位

长度属性提供三个关键字

关键字 说明
fixedlen 固定长度
minlen 最小长度
maxlen 最大长度

len属性的四种配置方式

方式一:仅设置固定长度fixedlen
len:[fixedlen:16]

强密码长度为fixedlen设置值(16位)。

方式二:仅设置最小长度minlen
len:[minlen:15]

强密码长度随机,最小长度为minlen设置值,最大为默认值32位(15-32位)。

方式三:仅设置最大长度maxlen
len:[maxlen:28]

强密码长度随机,最小长度为默认值12位,最大为maxlen设置值(12-28位)。

方式四:同时设置最大长度maxlen和最小长度minlen
len:[minlen:13,maxlen:18]

强密码长度随机,最小长度为minlen设置值,最大为maxlen设置值。minlen的值必须小于maxlen的值(13-18位)。

不设置len属性

默认强密码长度为16位

四、自定义规则样例

规则样例 规则释义
begin:[upper],special:[yes],len:[maxlen:32,minlen:12] 以大写字母开头,包含大小写字母、数字、特殊字符,长度为12-32位的随机数值
begin:[lower],special:[yes],len:[minlen:14] 以小写字母开头,包含大小写字母、数字、特殊字符,长度为14-32位的随机数值
begin:[digit],special:[yes],len:[fixedlen:15] 以数字开头,包含大小写字母、数字、特殊字符,长度为15位
begin:[upper] 以大写字母开头,包含大小写字母、数字,长度为16位
special:[yes] 以任意字母或数字开头,包含大小写字母、数字、特殊字符,长度为16位
len:[fixedlen:15] 以任意字母或数字开头,包含大小写字母、数字,长度为15位
begin:[upper],special:[yes] 以大写字母开头,包含大小写字母、数字、特殊字符,长度为16位
begin:[lower],len:[maxlen:25,minlen:12] 以小写字母开头,包含大小写字母、数字,长度为12-25位的随机数值
special:[yes],len:[fixedlen:15] 以任意字母或数字开头,包含大小写字母、数字、特殊字符,长度为15位

五、代码示例

// 注册/修改密码页面
@Entry
@Component
struct RegisterPage {
    @State newPassword: string = '';
    
    build() {
        Column() {
            Text("注册新账号")
                .fontSize(24)
                .margin({ top: 50, bottom: 30 })
            
            // 用户名输入框
            TextInput({ placeholder: '用户名' })
                .type(InputType.USER_NAME)
                .width('90%')
                .margin({ bottom: 16 })
            
            // 新密码输入框 - 带强密码生成
            TextInput({ placeholder: '新密码' })
                .enableAutoFill(true)  // 开启自动填充
                .type(InputType.NEW_PASSWORD)  // 新密码类型
                .passwordRules('begin:[lower],special:[yes],len:[maxlen:32,minlen:12]')
                .showPasswordIcon(true)
                .width('90%')
                .margin({ bottom: 36 })
                .onChange((value: string) => {
                    this.newPassword = value;
                })
            
            // 注册按钮
            Button('注册')
                .width('90%')
                .height(48)
                .backgroundColor('#007DFF')
                .borderRadius(24)
                .enabled(this.newPassword !== '')
                .onClick(() => {
                    this.doRegister();
                })
        }
        .width('100%')
        .height('100%')
        .justifyContent(FlexAlign.Start)
        .padding(20)
    }
    
    private doRegister() {
        console.info('注册成功');
    }
}

通过在TextInput上设置passwordRules属性,可以自定义强密码的生成规则(begin首位类型、special特殊字符、len长度范围),帮助用户创建更安全的密码,提升账号安全性。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐