鸿蒙多功能工具箱开发实战(二十七)-安全加固与数据保护
鸿蒙多功能工具箱开发实战(二十七)-安全加固与数据保护前言安全是应用开发的重要考量。本文将讲解HarmonyOS应用的安全加固和数据保护措施。一、敏感数据保护1.1 数据加密importcryptoFrameworkfromohos.security.cryptoFrameworkexportclassCryptoUtil{/** * AES加密 */staticasyncaesEncrypt(plainText:string,key:string):Promisestring{try{// 创建加密器constciphercryptoFramework.createCipher(AES256|CBC|PKCS7)// 生成密钥constsymKeyawaitthis.generateAesKey(key)// 加密constinput{data:newUint8Array(Buffer.from(plainText).buffer)}awaitcipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE,symKey,null)constoutputawaitcipher.doFinal(input)// 转Base64returnthis.uint8ArrayToBase64(output.data)}catch(e){console.error(AES encrypt failed:,e)throwe}}/** * AES解密 */staticasyncaesDecrypt(cipherText:string,key:string):Promisestring{try{constciphercryptoFramework.createCipher(AES256|CBC|PKCS7)constsymKeyawaitthis.generateAesKey(key)// Base64转Uint8Arrayconstinput{data:this.base64ToUint8Array(cipherText)}awaitcipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE,symKey,null)constoutputawaitcipher.doFinal(input)returnBuffer.from(output.data).toString()}catch(e){console.error(AES decrypt failed:,e)throwe}}privatestaticasyncgenerateAesKey(key:string):PromisecryptoFramework.SymKey{constkeyBlob:cryptoFramework.DataBlob{data:newUint8Array(Buffer.from(key.padEnd(32,0).slice(0,32)).buffer)}constgeneratorcryptoFramework.createSymKeyGenerator(AES256)returnawaitgenerator.convertKey(keyBlob)}privatestaticuint8ArrayToBase64(data:Uint8Array):string{returnBuffer.from(data).toString(base64)}privatestaticbase64ToUint8Array(base64:string):Uint8Array{returnnewUint8Array(Buffer.from(base64,base64).buffer)}}1.2 密码哈希exportclassPasswordUtil{/** * 生成密码哈希 */staticasynchash(password:string,salt?:string):Promise{hash:string,salt:string}{// 生成盐值constsaltValuesalt||this.generateSalt()// SHA256哈希constmdcryptoFramework.createMd(SHA256)awaitmd.update({data:newUint8Array(Buffer.from(passwordsaltValue).buffer)})constresultawaitmd.digest()return{hash:Buffer.from(result.data).toString(hex),salt:saltValue}}/** * 验证密码 */staticasyncverify(password:string,hash:string,salt:string):Promiseboolean{constresultawaitthis.hash(password,salt)returnresult.hashhash}privatestaticgenerateSalt():string{constrandomnewUint8Array(16)for(leti0;i16;i){random[i]Math.floor(Math.random()*256)}returnBuffer.from(random).toString(hex)}}二、安全存储2.1 安全偏好设置exportclassSecurePreferences{privatestaticinstance:SecurePreferencesprivatepreferences:PreferencesprivateencryptionKey:stringprivateconstructor(){}staticasyncgetInstance():PromiseSecurePreferences{if(!SecurePreferences.instance){constinstancenewSecurePreferences()instance.preferencesawaitpreferences.getPreferences(globalThis.context,secure_prefs)instance.encryptionKeyawaitinstance.getOrCreateKey()SecurePreferences.instanceinstance}returnSecurePreferences.instance}/** * 安全存储数据 */asyncputSecure(key:string,value:string):Promisevoid{constencryptedawaitCryptoUtil.aesEncrypt(value,this.encryptionKey)awaitthis.preferences.put(key,encrypted)awaitthis.preferences.flush()}/** * 安全读取数据 */asyncgetSecure(key:string):Promisestring|null{constencryptedawaitthis.preferences.get(key,)asstringif(!encrypted)returnnulltry{returnawaitCryptoUtil.aesDecrypt(encrypted,this.encryptionKey)}catch(e){console.error(Decrypt failed:,e)returnnull}}privateasyncgetOrCreateKey():Promisestring{letkeyawaitthis.preferences.get(master_key,)asstringif(!key){keyPasswordUtil.generateSalt()awaitthis.preferences.put(master_key,key)awaitthis.preferences.flush()}returnkey}}三、网络安全3.1 HTTPS证书校验importhttpfromohos.net.httpexportclassSecureHttpClient{privatehttpClient:http.HttpClientconstructor(){this.httpClienthttp.createHttp()}/** * 安全HTTP请求 */asyncsecureRequest(url:string,options:http.HttpRequestOptions):Promisehttp.HttpResponse{// 强制HTTPSif(!url.startsWith(https://)){thrownewError(Only HTTPS is allowed)}returnnewPromise((resolve,reject){this.httpClient.request(url,{...options,// 证书校验header:{...options.header,X-Content-Type-Options:nosniff,X-Frame-Options:DENY}},(err,data){if(err){reject(err)}else{resolve(data)}})})}}3.2 请求签名exportclassRequestSigner{privatestaticsecretKeyyour-secret-key/** * 生成请求签名 */staticsign(params:Recordstring,any):string{// 排序参数constsortedKeysObject.keys(params).sort()constsignStrsortedKeys.map(k${k}${params[k]}).join()// HMAC-SHA256签名constmaccryptoFramework.createMac(HMACSHA256)// ... 签名实现returnsignStr}/** * 验证签名 */staticverify(params:Recordstring,any,signature:string):boolean{constexpectedSignthis.sign(params)returnexpectedSignsignature}}四、权限控制4.1 敏感操作保护exportclassAuthGuard{privatestaticlastAuthTime:number0privatestaticauthTimeout:number5*60*1000// 5分钟/** * 检查是否需要认证 */staticneedAuth():boolean{constnowDate.now()returnnow-this.lastAuthTimethis.authTimeout}/** * 执行敏感操作 */staticasyncexecuteWithAuthT(operation:()PromiseT,authPrompt:()Promiseboolean):PromiseT|null{if(this.needAuth()){constauthenticatedawaitauthPrompt()if(!authenticated){returnnull}this.lastAuthTimeDate.now()}returnawaitoperation()}}五、高级安全功能5.1 安全流程图是否用户数据是否敏感?加密存储普通存储安全区域常规存储5.2 安全区域存储importsecurityfromohos.securityclassSecureStorage{staticasyncsave(key:string,value:string){// 使用安全区域存储敏感数据awaitsecurity.setSecureData({alias:key,data:value})}staticasyncget(key:string):Promisestring{constresultawaitsecurity.getSecureData({alias:key})returnresult.data}}5.3 输入验证classInputValidator{staticvalidateEmail(email:string):boolean{return/^[^\s][^\s]\.[^\s]$/.test(email)}staticvalidatePhone(phone:string):boolean{return/^1[3-9]\d{9}$/.test(phone)}staticsanitize(input:string):string{// 防止XSS攻击returninput.replace(/[]/g,)}}图 1 本地存储六、小结本文详细讲解了安全加固✅ 数据加密✅ 密码哈希✅ 安全存储✅ 网络安全✅ 权限控制✅ 安全区域存储✅ 输入验证系列文章导航下期预告鸿蒙多功能工具箱开发实战(二十八)-应用更新与版本管理

相关新闻

终极指南:三步实现Iwara视频批量下载与智能管理

终极指南:三步实现Iwara视频批量下载与智能管理

终极指南:三步实现Iwara视频批量下载与智能管理 【免费下载链接】IwaraDownloadTool Iwara 下载工具 | Iwara Downloader 项目地址: https://gitcode.com/gh_mirrors/iw/IwaraDownloadTool 还在为无法离线收藏心爱的动画作品而烦恼吗?是否遇到过网…

2026/7/26 8:31:11 阅读更多 →
LangChain版本冲突避坑指南:一个虚拟环境解决所有问题

LangChain版本冲突避坑指南:一个虚拟环境解决所有问题

【导航台账】制造数据与AI践行者老蒋的技术博客全系列文章汇总(持续更新) 文章摘要 执行pip install langchain0.3.13时,因langgraph等衍生包要求langchain-core>1.4.4,与锁定的0.3.29版本产生致命冲突,导致安装失…

2026/7/26 8:31:11 阅读更多 →
【计算机工具类-CI和CD工具Skills】app-store-changelog 技能

【计算机工具类-CI和CD工具Skills】app-store-changelog 技能

从上次标签以来的git历史生成面向用户的App Store发布说明。 技能概述 app-store-changelog 技能从git历史生成全面的、面向用户的变更日志,然后将提交转换为清晰的App Store发布说明。它自动收集自上次标签以来的更改,分类用户可见的更改,并生成适合App Store"新功能&q…

2026/7/26 8:31:11 阅读更多 →

最新新闻

Codex AI编程助手:核心技术解析与工程实践

Codex AI编程助手:核心技术解析与工程实践

1. Codex:重新定义AI编程助手的边界作为一名在软件开发领域摸爬滚打十年的老兵,我见证过从基础代码补全到智能IDE的演进历程。但当我第一次使用Codex时,那种震撼感至今难忘——它不像传统工具那样机械地响应指令,而是像一个真正理…

2026/7/26 8:53:21 阅读更多 →
GPU资源共享技术HAMi:提升AI训练与推理效率

GPU资源共享技术HAMi:提升AI训练与推理效率

1. 项目背景与行业痛点在AI模型训练和推理场景中,GPU资源的高效利用一直是困扰从业者的核心难题。传统GPU分配方式采用静态独占模式,导致以下典型问题:资源碎片化:当多个任务对显存需求差异较大时,大显存任务会阻塞小显…

2026/7/26 8:53:20 阅读更多 →
解决MSWB70804.dll丢失问题的完整指南

解决MSWB70804.dll丢失问题的完整指南

1. 问题现象与初步诊断 最近在启动某个专业软件时,突然弹出了"MSWB70804.dll文件丢失"的错误提示。这种情况通常发生在Windows系统环境中,当某个应用程序或游戏尝试调用动态链接库文件(DLL)时,系统无法在指定…

2026/7/26 8:53:20 阅读更多 →
TrollInstallerX实战指南:iOS 14-16.6.1设备TrollStore智能安装完整教程

TrollInstallerX实战指南:iOS 14-16.6.1设备TrollStore智能安装完整教程

TrollInstallerX实战指南:iOS 14-16.6.1设备TrollStore智能安装完整教程 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 欢迎来到TrollInstallerX的完整使用…

2026/7/26 8:53:20 阅读更多 →
AIGC内容检测与修正全流程指南

AIGC内容检测与修正全流程指南

1. 项目概述最近在内容创作领域,AIGC(人工智能生成内容)的检测与修正成为了一个热门话题。作为一名长期从事数字内容生产的技术从业者,我发现在实际工作中,很多创作者都会遇到这样的困扰:经过各种工具处理后…

2026/7/26 8:53:20 阅读更多 →
ROS2 QoS策略——可靠性/持久性/截止时间的工程选型

ROS2 QoS策略——可靠性/持久性/截止时间的工程选型

面试被问:"ROS2的QoS有哪些策略?你在项目中怎么选的?" 我说"可靠和尽力而为两种"。面试官说:"那截止时间(Deadline)和存活时间(Lifespan)你用过吗&#x…

2026/7/26 8:52:20 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻