易盾安全键盘-鸿蒙

2024.11.25 14:16:22

    提供了一个自定义的安全键盘控件。该控件使用严格的加密方式对用户输入的信息进行安全处理, 并提供多种类型的输入类型供用户随意切换,避免了使用 HarmonyOS Next 自带输入键盘所带来的安全隐患

    兼容性

    条目 说明
    适配版本 HarmonyOS 12 及以上版本

    资源引入

    远程仓库依赖

    安全键盘共享包 HAR 需要从易盾获取,请联系易盾商务人员。拿到共享包之后参考以下方法添加本地依赖

    方式

    将共享包拷贝到对应待接入 Module 的 libs 文件夹中,没有该文件夹需先创建。然后在 oh-package.json5 中添加共享包依赖

    "dependencies": {
      "@yidun/safekeyboard": "file:./libs/safekeyboard_yidun.har"
    }
    

    各种配置

    权限配置

    共享包依赖窗口操作权限,请在对应 Module 的 module.json5 中添加权限

     "requestPermissions": [
          {
            "name": "ohos.permission.PRIVACY_WINDOW"
          }
        ],
    

    快速调用示例

    PwdTextInput 是自定义安全输入框组件,凡是使用 TextInput 的地方请替换为 PwdTextInput

    示例

    import { PwdTextInput } from '@yidun/safekeyboard'
    import { KeyboardConfig, ThemeStyle } from '@yidun/safekeyboard'
    import { NetEaseKeyboardController, SecType } from '@yidun/safekeyboard'
    
    @Component
    export default struct Test {
        // 安全键盘配置信息
        private keyboardConfig?: KeyboardConfig
      
       aboutToAppear(): void {
        // 打开日志开关
        NetEaseKeyboardController.getInstance().setDebug(true)
        // 初始化配置信息
        this.keyboardConfig = new KeyboardConfig()
        // 设置标题
        this.keyboardConfig.setTitle('易盾安全键盘')
        // 设置主题
        this.keyboardConfig.setThemeStyle(ThemeStyle.BLACK)
      }
      
      build() {
        Column() {
            PwdTextInput({
              placeholder: "请输入密码",
              keyboardConfig: this.keyboardConfig,
              onTextChange: (content) => {
                this.logger.info(`当前输入框里面的内容为${content}`)
              }
            })
              .height(48)
              .margin({
                top: 24
            })
        }
      }
    }
    

    共享包方法说明

    首先需要把所有 TextInput 组件替换为 PwdTextInput

    build() {
        Column() {
           PwdTextInput({
              placeholder: "请输入密码",
              keyboardConfig: this.keyboardConfig
            })
        }
    }
    

    1. 安全键盘配置

    代码说明

    let keyboardConfig = new KeyboardConfig()
    build() {
        Column() {
           PwdTextInput({
              placeholder: "请输入密码",
              keyboardConfig: this.keyboardConfig
            })
        }
    }
    

    KeyboardConfig 支持的配置项说明

    配置项 参数 描述
    setTitle title:string 键盘标题
    setHideTitle hideTitle:string 键盘关闭文本
    setIconRes iconRes:string 键盘图标资源,建议大小40*40
    setMaxInputLength maxInputLength:number 键盘允许输入的最大长度
    setIsRandom isRandom:boolean 键盘按键是否随机
    setThemeStyle themeStyle:ThemeStyle 键盘主题,白色和黑色两种
    setKeyboardType keyboardType:EKeyboardType 键盘类型,总共5中,默认字母小写键盘
    setTextAutoClean textAutoClean:boolean 键盘弹起是否清空输入框内容
    setIsVolumeOpen isVolumeOpen:boolean 键盘点击声音是否打开
    setIsEcho isEcho:boolean 输入框内容是否密文显示

    主题枚举 ThemeStyle 说明

    ThemeStyle.WHITE 白色主题
    ThemeStyle.BLACK 黑色主题
    

    键盘类型枚举 EKeyboardType 说明

    EKeyboardType.NUMERIC 数字键盘
    EKeyboardType.UPPERCASE 大写字母键盘
    EKeyboardType.LOWERCASE 小写字母键盘
    EKeyboardType.SPECIAL 特殊字符键盘
    EKeyboardType.IDCard 身份证键盘
    

    2. 打开日志开关

    代码说明

    NetEaseKeyboardController.getInstance().setDebug(debug: boolean)
    

    参数说明

    参数 类型 是否必填 默认值 描述
    debug boolean false 是否打开日志开关

    3. 设置是否防截屏

    代码说明

    NetEaseKeyboardController.getInstance().sePrivacyWindow(privacyWindow: boolean)
    

    参数说明

    参数 类型 是否必填 默认值 描述
    privacyWindow boolean true 是否防截屏

    4. 获取明文(原始输入内容)

    代码说明

    NetEaseKeyboardController.getInstance().getRawValue()
    

    5. 设置加密方式和秘钥(用于返回密文)

    代码说明

    NetEaseKeyboardController.getInstance().setKey(secType: SecType, key: string)
    

    参数说明

    参数 类型 是否必填 默认值 描述
    secType SecType 加密方式,支持 SM2 和 RSA 两种
    key string 秘钥

    6. 获取密文(需要用设置的加密方式和秘钥解密)

    代码说明

    NetEaseKeyboardController.getInstance().getEncValue()
    

    sdk 中提供了 SM2 和 RSA 的解密 api

    Sm2Utils.sm2DecText(encText: string, key: string)
    RsaUtils.rsaDecText(encText: string, key: string)
    

    7. 检查安全键盘是否在有效期

    代码说明

    NetEaseKeyboardController.getInstance().isValidity()
    
    Online Chat Tel:95163223 Free trial