react-native-encrypted-storage:基于 React Native 生态的鸿蒙加密存储库

基于 Keychain/SharedPreferences 的加密本地存储

Branch3Tags3
FilesLast commitLast update
12 days ago
12 days ago
12 days ago
1 month ago
1 month ago
1 month ago
12 days ago
12 days ago
12 days ago
1 month ago
12 days ago
1 month ago

react-native-encrypted-storage

本项目基于 react-native-encrypted-storage开发。如果在使用过程中有任何问题,欢迎在AtomGit提交Issue,会及时跟进。

项目介绍

@hxa-rn/react-native-encrypted-storage 是 react-native-encrypted-storage 的鸿蒙(OpenHarmony)适配版本,当前规范版本号为 4.0.7。

本库通过 TurboModule 提供加密本地存储,鸿蒙端使用 preferences + cryptoFramework AES-256-GCM + Asset Store Kit 主密钥。

鸿蒙适配包版本 原始库版本 支持 RN 版本 Autolink
4.0.7 4.0.3 0.72+ 是

集成指南

npm install @hxa-rn/react-native-encrypted-storage

peerDependencies:react-native >= 0.72。

本模块支持 Autolink。harmony.alias 为 react-native-encrypted-storage,业务代码从该原库名导入,而不是 @hxa-rn/react-native-encrypted-storage。

HAR 路径:harmony/encrypted_storage.har。

使用说明

import EncryptedStorage from 'react-native-encrypted-storage';

export async function saveAndReadSession() {
  await EncryptedStorage.setItem(
    'user_session',
    JSON.stringify({ token: 'ACCESS_TOKEN' })
  );

  const session = await EncryptedStorage.getItem('user_session');
  if (session !== null) {
    // 使用读取到的值
  }

  await EncryptedStorage.removeItem('user_session');
  await EncryptedStorage.clear();
}
  • getItem 在 key 不存在时返回 null,与 Android/iOS 一致。
  • 每个写操作内部 await preferences.flush() 保证落盘。

接口文档

API 描述 参数 返回值 HarmonyOS 支持
setItem 加密写入键值对 key: string, value: string Promise<void> ✅ 完全支持
getItem 加密读取;key 不存在返回 null key: string Promise<string | null> ✅ 完全支持
removeItem 删除指定 key(幂等) key: string Promise<void> ✅ 完全支持
clear 清空本模块命名空间 无 Promise<void> ✅ 完全支持

鸿蒙端存储后端为 preferences + AES-256-GCM + Asset Store Kit 主密钥,等效 Android EncryptedSharedPreferences / iOS Keychain。

快速验证(运行 Example)

前置条件

依赖 版本要求
Node.js >= 18
DevEco Studio 5.0+
HarmonyOS SDK API 12+

运行步骤

1. 克隆仓库

git clone https://gitcode.com/hxa-rn/react-native-encrypted-storage.git
cd react-native-encrypted-storage
git checkout main

2. 安装仓库开发依赖

npm install --legacy-peer-deps

Example 已改为从 npm 公仓安装 @hxa-rn/react-native-encrypted-storage@4.0.7,不再使用本地 file:../xxx.tgz,运行 Example 不必再执行 npm pack。

3. 进入 example 目录,安装依赖

cd example          # 或 example_auto
npm install --legacy-peer-deps

4. 生成 JS Bundle

npm run dev

产物:harmony/entry/src/main/resources/rawfile/bundle.harmony.js

5. 用 DevEco Studio 打开鸿蒙工程

  • 打开 DevEco Studio
  • 选择 example/harmony(或 example_auto/harmony)目录
  • 等待 Sync 完成

6. 编译并运行 HAP

在 DevEco Studio 中点击运行按钮,将 HAP 安装到设备/模拟器。

注意:Example 中已预置插件依赖和 Package 注册,无需手动配置 Link。

约束与限制

兼容性

  • 鸿蒙 SDK:API 12+
  • 上游 RN SDK:0.72+
  • React Native / RNOH:0.72+
  • DevEco Studio:5.0+

权限

  • 无额外系统权限

使用限制

  • 存储数据随应用沙箱生命周期,卸载即清除。
  • 主密钥存于 Asset Store Kit;资产被清理后历史密文无法解密。

开源license

本项目基于 MIT 协议,详见 LICENSE 文件。

问题反馈渠道

使用问题请在 AtomGit 提交 Issue。也可在 GitCode 仓库反馈:

https://gitcode.com/hxa-rn/react-native-encrypted-storage

https://gitcode.com/hxa-rn/react-native-encrypted-storage/issues

Introduction

基于 Keychain/SharedPreferences 的加密本地存储

Customize your domain