HarmonyOS 鸿蒙Next中cihper解密

HarmonyOS 鸿蒙Next中cihper解密

let blob: crypto.DataBlob = { data: this.hexStrToBytes('i23XYz0V3ymAejpB54lJ6rZp') };
let cihper = cryptoFramework.createCipher('3DES192|ECB|PKCS7');
let symKeyGenerator = cryptoFramework.createSymKeyGenerator('3DES192');
symKeyGenerator.convertKey(blob, (err, key) => {
  if (err) {
    hilog.error(0, 'GainQrcode123', 'message====' + `${err.code}, ${err.message}`)
  } else {

  }
});

报错 401, convert sym key failed. 什么原因

hexStrToBytes这个方法是将字符串转成Uint8Array

java里的解密规则是下面

public static final String KEY_ALGORITHM = "DESede";

public static final String CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding";

鸿蒙里有对应的解密规则吗?


更多关于HarmonyOS 鸿蒙Next中cihper解密的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

1.AES128,key只能是16个字节,你是否输入32字节

若256位密钥请使用AES256:

let cipher = cryptoFramework.createCipher('AES256|CBC|PKCS7');

let symKey = await genSymKeyByData(keyData,"AES256");

然后不要截断response里的密钥,解密试试呢。

2.鸿蒙里有对应的解密规则参考:@ohos.security.cryptoFramework (加解密算法库框架)-ArkTS API-Crypto Architecture Kit(加解密算法框架服务)-安全-系统 - 华为HarmonyOS开发者

更多关于HarmonyOS 鸿蒙Next中cihper解密的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Cipher解密主要依赖于系统提供的加密框架。鸿蒙Next的加密框架支持对称加密、非对称加密和哈希算法,开发者可以通过调用相关的API实现数据的解密操作。

具体来说,鸿蒙Next提供了Cipher类,该类用于执行加密和解密操作。开发者可以通过Cipher.getInstance()方法获取Cipher实例,并指定所需的加密算法和工作模式。在解密时,首先需要使用Cipher.init()方法初始化Cipher实例,设置解密模式和密钥。然后,调用Cipher.doFinal()方法对密文进行解密,得到原始数据。

鸿蒙Next支持的加密算法包括AES、RSA等,开发者可以根据需求选择合适的算法。此外,鸿蒙Next还提供了密钥管理功能,开发者可以通过KeyStore类安全地存储和管理密钥。

需要注意的是,鸿蒙Next的加密框架遵循Java Cryptography Architecture (JCA) 规范,但由于鸿蒙Next的底层实现与Android和Java SE有所不同,开发者在移植相关代码时需留意兼容性问题。

总结来说,鸿蒙Next中通过Cipher类和相关API实现解密操作,支持多种加密算法和密钥管理功能,开发者可根据具体需求选择合适的加密算法和模式。

在HarmonyOS(鸿蒙Next)中,Cipher类用于执行加密和解密操作。如果需要解密数据,首先需要初始化Cipher实例,并设置为解密模式。以下是一个简单的解密示例:

// 假设你已经有了密钥和加密数据
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, ivParameterSpec);

// 解密数据
byte[] decryptedData = cipher.doFinal(encryptedData);

确保密钥和初始化向量(IV)与加密时使用的相同,否则解密将失败。

回到顶部