鸿蒙Next ArkTS中如何使用RSA和SHA384算法进行加密
在鸿蒙Next的ArkTS开发中,如何正确使用RSA和SHA384算法实现数据加密?具体需要导入哪些模块,以及加密流程是怎样的?能否提供完整的代码示例?
2 回复
在ArkTS中,用@ohos.security.cryptoFramework调用RSA和SHA384。先创建非对称密钥生成器,指定RSA和SHA384参数,生成密钥对。然后用加密器调用公钥加密数据,解密器用私钥解密。简单说:生成密钥、加密、解密三步搞定!
更多关于鸿蒙Next ArkTS中如何使用RSA和SHA384算法进行加密的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next的ArkTS中,可以使用@ohos.security.cryptoFramework模块实现RSA和SHA384加密。以下是完整示例:
- 生成RSA密钥对:
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
// 生成RSA密钥对
async function generateRSAKeyPair(): Promise<cryptoFramework.KeyPair> {
const rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024|PRIMES_2');
return await rsaGenerator.generateKeyPair();
}
- SHA384哈希计算:
async function sha384Hash(data: string): Promise<Uint8Array> {
const sha384 = cryptoFramework.createHash('SHA384');
await sha384.update({ data: new Uint8Array(Array.from(data, c => c.charCodeAt(0))) });
return await sha384.digest();
}
- RSA加密:
async function rsaEncrypt(
key: cryptoFramework.PubKey,
data: Uint8Array
): Promise<Uint8Array> {
const cipher = cryptoFramework.createCipher('RSA1024|PKCS1');
await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, key, null);
return await cipher.doFinal(data);
}
- 完整使用流程:
async function rsaSha384Encrypt(plainText: string) {
try {
// 1. 生成密钥对
const keyPair = await generateRSAKeyPair();
// 2. 计算SHA384哈希
const hashData = await sha384Hash(plainText);
// 3. RSA加密哈希值
const encryptedData = await rsaEncrypt(keyPair.pubKey, hashData);
console.info('加密结果:', Array.from(encryptedData));
return encryptedData;
} catch (error) {
console.error('加密失败:', error);
}
}
// 调用示例
rsaSha384Encrypt('Hello ArkTS');
关键说明:
- 使用
RSA1024|PKCS1填充模式 - SHA384输出长度384位(48字节)
- 实际应用中建议:
- 对原始数据先做SHA384哈希
- 再对哈希值进行RSA加密
- 注意处理异步操作
注意事项:
- 需要权限:
ohos.permission.USE_CRYPTO - 在module.json5中声明权限
- 建议在生产环境使用更安全的密钥长度(如RSA2048)

