易盾安全键盘-鸿蒙
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()