鸿蒙密码生成器开发笔记

前言

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

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

一、功能说明

1.1 主要功能

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

1.2 界面功能

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

二、实现过程

2.1 核心实现

  1. 字符集定义

    class CharacterSet {
    readonly upperCase: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    readonly lowerCase: string = 'abcdefghijklmnopqrstuvwxyz'
    readonly numbers: string = '0123456789'
    readonly specialChars: string = '!@#$%^&*()_+-=[]{}|;:,.<>?'
    }
    
  2. 配置管理

class PasswordConfig {
  length: number = 12
  useUpperCase: boolean = true
  useLowerCase: boolean = true
  useNumbers: boolean = true
  useSpecialChars: boolean = true

  setOption(key: string, value: boolean) {
    switch (key) {
      case 'useUpperCase':
        this.useUpperCase = value
        break
      case 'useLowerCase':
        this.useLowerCase = value
        break
      case 'useNumbers':
        this.useNumbers = value
        break
      case 'useSpecialChars':
        this.useSpecialChars = value
        break
    }
  }

  getOption(key: string): boolean {
    switch (key) {
      case 'useUpperCase':
        return this.useUpperCase
      case 'useLowerCase':
        return this.useLowerCase
      case 'useNumbers':
        return this.useNumbers
      case 'useSpecialChars':
        return this.useSpecialChars
      default:
        return false
    }
  }
}
  1. 密码生成
private generatePassword() {
  // 构建字符集
  let chars = ''
  if (this.config.useUpperCase) chars += this.CHARS.upperCase
  if (this.config.useLowerCase) chars += this.CHARS.lowerCase
  if (this.config.useNumbers) chars += this.CHARS.numbers
  if (this.config.useSpecialChars) chars += this.CHARS.specialChars

  if (!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
版权声明:本文为原创文章

相关文件下载
微信图片_20250521221829.jpg
424.53 KB
下载
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐