
回复
鸿蒙Next的加解密框架(Crypto Architecture Kit)为应用构建安全防线提供底层支持。本文解析核心概念、功能特性与场景适配,助开发者快速上手~
功能模块 | 支持算法/操作 | 典型场景 |
---|---|---|
对称加密 | AES-128/256、DES、3DES | 聊天消息加密、文件存储 |
非对称加密 | RSA-2048/4096、ECDSA(P-256曲线) | 数字签名、密钥交换 |
哈希算法 | SHA-256/512、MD5(不推荐高安全场景) | 数据完整性校验、密码存储 |
密钥派生 | PBKDF2、Scrypt | 从密码生成强密钥 |
安全随机数 | 真随机数生成(TRNG) | 初始化向量(IV)生成 |
graph LR
A[应用] --> B{需求类型}
B -->|临时密钥操作| C[Crypto Kit]
B -->|长期密钥存储| D[Universal Keystore Kit]
C --> E[内存中处理密钥]
D --> F[安全区域存储密钥]
import { symmetric } from '@ohos.security.crypto';
async function aesEncrypt(plaintext: string, key: string) {
const cipher = symmetric.createCipher('AES/CBC/PKCS7Padding');
await cipher.init(symmetric.CipherMode.ENCRYPT, key, '随机IV值');
return cipher.doFinal(plaintext);
}
import { asymmetric } from '@ohos.security.crypto';
// 生成密钥对
const { publicKey, privateKey } = await asymmetric.generateKeyPair('RSA', 2048);
// 签名
const signature = await asymmetric.sign(privateKey, '数据原文', 'SHA256withRSA');
// 验签
const isValid = await asymmetric.verify(publicKey, '数据原文', signature, 'SHA256withRSA');
// 流程:生成随机AES密钥→加密文件→用用户密码派生密钥加密AES密钥
const fileData = readFile('敏感数据.txt');
const aesKey = symmetric.generateKey('AES', 256);
const encryptedFile = await aesEncrypt(fileData, aesKey);
// 用用户密码生成保护密钥
const password = '用户密码';
const derivedKey = await keyDerivation.pbkdf2(password, '盐值', 10000, 256);
const encryptedAesKey = await asymmetric.encrypt(derivedKey, aesKey);
// 存储:加密文件+加密后的AES密钥
writeFile('encrypted.dat', encryptedFile);
writeFile('aeskey.enc', encryptedAesKey);
sequenceDiagram
客户端->>服务器: 请求公钥
服务器->>客户端: 返回RSA公钥
客户端->>客户端: 生成AES会话密钥
客户端->>服务器: 用公钥加密会话密钥+数据
服务器->>服务器: 用私钥解密密钥
服务器->>客户端: 返回AES加密后结果