当前位置: 首页 > backend >正文

鸿蒙密码生成器开发笔记

鸿蒙密码生成器开发笔记

前言

最近在搞鸿蒙工具箱,想着加个密码生成器。这玩意主要是用来生成随机密码,方便用户创建安全密码。本来以为挺简单的,结果发现要处理各种边界情况,调试了好几次才搞定。

写这个工具的时候遇到不少坑,比如字符集问题,随机性问题,复制问题等等。不过最后都解决了,现在用起来还挺顺手的。

一、功能说明

1.1 主要功能

  • 自定义密码长度
  • 自定义字符类型
  • 一键复制密码
  • 收藏功能

1.2 界面功能

  • 长度设置
  • 字符类型开关
  • 生成按钮
  • 结果显示
  • 复制按钮

二、实现过程

2.1 核心实现

  1. 字符集定义
class CharacterSet {readonly upperCase: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'readonly lowerCase: string = 'abcdefghijklmnopqrstuvwxyz'readonly numbers: string = '0123456789'readonly specialChars: string = '!@#$%^&*()_+-=[]{}|;:,.<>?'
}
  1. 配置管理
class PasswordConfig {length: number = 12useUpperCase: boolean = trueuseLowerCase: boolean = trueuseNumbers: boolean = trueuseSpecialChars: boolean = truesetOption(key: string, value: boolean) {switch (key) {case 'useUpperCase':this.useUpperCase = valuebreakcase 'useLowerCase':this.useLowerCase = valuebreakcase 'useNumbers':this.useNumbers = valuebreakcase 'useSpecialChars':this.useSpecialChars = valuebreak}}getOption(key: string): boolean {switch (key) {case 'useUpperCase':return this.useUpperCasecase 'useLowerCase':return this.useLowerCasecase 'useNumbers':return this.useNumberscase 'useSpecialChars':return this.useSpecialCharsdefault:return false}}
}
  1. 密码生成
private generatePassword() {// 构建字符集let chars = ''if (this.config.useUpperCase) chars += this.CHARS.upperCaseif (this.config.useLowerCase) chars += this.CHARS.lowerCaseif (this.config.useNumbers) chars += this.CHARS.numbersif (this.config.useSpecialChars) chars += this.CHARS.specialCharsif (!chars) {promptAction.showToast({ message: '请至少选择一种字符类型' })return}// 生成密码let password = ''for (let i = 0; i < this.config.length; i++) {password += chars.charAt(Math.floor(Math.random() * chars.length))}this.generatedPassword = password
}

三、踩坑记录

3.1 遇到的问题

  1. 随机性问题

    • 问题:生成的密码不够随机
    • 解决:用了Math.random()
    • 建议:可以用更安全的随机数生成器
  2. 字符集问题

    • 问题:特殊字符显示乱码
    • 解决:统一用UTF-8
    • 建议:限制特殊字符范围
  3. 复制问题

    • 问题:复制失败
    • 解决:加了错误处理
    • 建议:加个重试机制
  4. 长度问题

    • 问题:长度限制不合理
    • 解决:限制在4-32位
    • 建议:根据字符类型动态调整

3.2 优化建议

  1. 功能优化

    • 支持密码强度检测
    • 加个密码历史
    • 支持批量生成
    • 加个密码分类
    • 支持导入导出
    • 加个密码管理
    • 支持密码分享
    • 加个密码备份
  2. 性能优化

    • 优化生成速度
    • 减少内存占用
    • 及时释放资源
    • 用多线程
    • 优化算法
    • 缓存结果
    • 压缩数据
    • 异步处理
  3. 用户体验

    • 加个使用说明
    • 支持快捷键
    • 优化动画效果
    • 加个主题
    • 支持分享
    • 加个收藏
    • 支持导入
    • 加个备份

四、总结

这个密码生成器基本功能都有了,可以:

  • 生成随机密码
  • 自定义密码规则
  • 一键复制密码
  • 收藏常用设置

五、参考资料

  • 鸿蒙应用开发指南

欢迎体验

这个密码生成器已经集成到鸿蒙开发者工具箱里了,欢迎下载体验!

鸿蒙开发者工具箱


作者:在人间耕耘
邮箱:1743914721@qq.com
版权声明:本文为原创文章

http://www.xdnf.cn/news/8725.html

相关文章:

  • C++ 正则表达式简介
  • 广东省省考备考(第十九天5.24)—申论(听课后强化训练)
  • docker虚拟化、容器化
  • 轻量化开源方案——浅析PdfPatcher实际应用
  • 21 程序控制语句详解:循环控制(while、do-while、for、循环机制与原理、嵌套循环)
  • 【深度学习新浪潮】如何用Dify构建自己的AI Agent?
  • 通过设备节点获取已注册的 i2c client
  • P8943 Deception Point
  • 单片机中断系统工作原理及定时器中断应用
  • python下通过wmic设置程序的优先级~~~
  • Java程序员高效视频学习指南
  • 战略-2.1 -战略分析(PEST/五力模型/成功关键因素)
  • C++ 类型转换
  • uni-app学习笔记十--vu3 computed的运用(一)
  • VMware Flings又又又搬家了
  • 嵌入式软件-如何做好一份技术文档?
  • esp32 lvgl9.2版本,透明底色图片的,透明部分被渲染成黑色,不随背景颜色变化解决办法
  • 从零开始:Python语言进阶之多态
  • Filament引擎(二) ——引擎的调用及接口层核心对象
  • 在Linux上安装Miniconda
  • leetcode438.找到字符串中所有字母异位词
  • Python之两个爬虫案例实战(澎湃新闻+网易每日简报):附源码+解释
  • 力扣 54 .螺旋矩阵
  • 148. 排序链表
  • 40-智慧医疗服务平台(在线接/问诊/机器学习)
  • 电工杯数学建模竞赛a题完整参考文章
  • C++魔法药水的配方 全国信息素养大赛复赛决赛 C++小学/初中组 算法创意实践挑战赛 内部集训模拟题详细解析
  • 深度学习模型在PDE求解中的实战:详细综述
  • 电磁场与电场、磁场的关系
  • React从基础入门到高级实战:React 基础入门 - React Hooks 入门