鸿蒙多功能工具箱开发实战(二十七)-安全加固与数据保护
鸿蒙多功能工具箱开发实战(二十七)-安全加固与数据保护前言安全是应用开发的重要考量。本文将讲解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 本地存储六、小结本文详细讲解了安全加固✅ 数据加密✅ 密码哈希✅ 安全存储✅ 网络安全✅ 权限控制✅ 安全区域存储✅ 输入验证系列文章导航下期预告鸿蒙多功能工具箱开发实战(二十八)-应用更新与版本管理

相关新闻

甲方验收南京话标注数据,发现声调标注完全不一致

甲方验收南京话标注数据,发现声调标注完全不一致

摘要随着智能语音产品向方言区下沉,南京话标注需求快速增长,但声调标注不一致成为验收环节的常见痛点。南京话拥有复杂的声调系统,且不同年龄层发音存在差异,导致标注质量难以统一。信实翻译作为国内多家头部AI数据服务商的源头供…

2026/7/26 8:28:54阅读更多 →
MCP协议:异构模型高效协同与状态同步技术解析

MCP协议:异构模型高效协同与状态同步技术解析

1. MCP技术背景与演进脉络 在分布式系统架构持续演进的当下,模型间的高效协同成为新的技术挑战。MCP(Model Context Protocol)作为新一代模型交互协议,其核心价值在于解决了异构模型间的上下文传递与状态同步问题。从技术发展轨迹来看,MCP的诞…

2026/7/26 8:28:54阅读更多 →
YOLOv10在大豆检测中的应用与优化实践

YOLOv10在大豆检测中的应用与优化实践

1. 项目背景与核心价值大豆作为全球重要的粮食作物和经济作物,其产量监测和品质评估一直是农业智能化领域的重点课题。传统的人工田间调查方式效率低下且主观性强,而基于计算机视觉的自动化检测技术正在彻底改变这一现状。我们团队基于最新的YOLOv10目标…

2026/7/26 8:28:54阅读更多 →
YOLOv11手势识别系统:边缘计算与工程实践

YOLOv11手势识别系统:边缘计算与工程实践

1. 项目背景与核心价值 手势识别作为人机交互的重要分支,正在从实验室走向工业应用。这套基于YOLOv11的全栈系统开发方案,完美融合了前沿算法与工程实践。我在实际部署中发现,传统手势识别方案存在三大痛点:实时性不足&#xff08…

2026/7/26 9:37:09阅读更多 →
浏览器端数据画布:零服务依赖的可视化编程与数据处理方案

浏览器端数据画布:零服务依赖的可视化编程与数据处理方案

在数据可视化与前端开发领域,我们经常面临一个核心挑战:如何在不依赖服务器端计算的情况下,实现复杂的数据处理与交互式仪表盘构建?近期一款基于浏览器的数据画布工具引起了广泛关注,它让所有数据处理、节点编辑和结果…

2026/7/26 9:37:09阅读更多 →
Unity手游热更新实战:基于HybridCLR的C#热修复架构与性能优化

Unity手游热更新实战:基于HybridCLR的C#热修复架构与性能优化

1. 项目概述:为什么是HybridCLR与CrazyCar? 在移动游戏开发,尤其是Unity手游的迭代长跑中,有一个场景是所有项目组都绕不开的噩梦:线上出了个紧急Bug,或者有个活动配置需要立刻调整,但玩家必须重…

2026/7/26 9:37:09阅读更多 →
谐波齿轮故障诊断:ASFRMT网络技术解析与实践

谐波齿轮故障诊断:ASFRMT网络技术解析与实践

1. 项目背景与核心价值 在机械传动系统中,谐波齿轮传动因其高精度、大传动比等优势被广泛应用于航空航天、机器人等高精尖领域。然而其故障特征往往表现为微弱的非线性调制信号,传统诊断方法在强背景噪声下容易失效。ASFRMT网络正是针对这一行业痛点提出…

2026/7/26 9:37:09阅读更多 →
图像修复:Inpaint函数的使用与图像补全实战

图像修复:Inpaint函数的使用与图像补全实战

图像修复:Inpaint函数的使用与图像补全实战📚 本章学习目标:深入理解Inpaint函数的使用与图像补全实战的核心概念与实践方法,掌握关键技术要点,了解实际应用场景与最佳实践。本文属于《计算机视觉教程》图像分割与形态…

2026/7/26 9:37:09阅读更多 →
GitHub界面汉化插件:3分钟让英文GitHub变中文,提升开发效率

GitHub界面汉化插件:3分钟让英文GitHub变中文,提升开发效率

GitHub界面汉化插件:3分钟让英文GitHub变中文,提升开发效率 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还…

2026/7/26 9:35:09阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →