HarmonyOS 鸿蒙Next 3DES加密,不支持设定自己的key?

HarmonyOS 鸿蒙Next 3DES加密,不支持设定自己的key? 3DES加密,不支持设定自己的key?

4 回复

以加密为例(解密参考使用即可):

//加密
public static async aesEncrypt(text: string,key:string,iv:string):Promise<string> {
let base = new util.Base64Helper();
let globalResult = ""
try {
let globalCipher = cryptoFramework.createCipher(cipherAlgName);
let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgName);
let keyBlob: cryptoFramework.DataBlob = { data: base.decodeSync(key) }
let promiseSymKey = await symKeyGenerator.convertKey(keyBlob)
// 偏移量
let globalCbcParams = genCBCParamsSpec();
globalCbcParams.iv = { data: base.decodeSync(iv, util.Type.BASIC) }
//初始化的时候传入偏移量
await globalCipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, promiseSymKey, globalCbcParams);
let plainText: cryptoFramework.DataBlob = { data: DESWork.stringToUint8Array(text) }
let result = await globalCipher.doFinal(plainText)
globalResult = base.encodeToStringSync(result.data);
}catch (err){
console.log(err.message)
}
return globalResult;
}

/*
* 偏移量参数
*
*/
function genCBCParamsSpec() {
let arr = [0x36, 0x61, 0x38, 0x77, 0x30, 0x63, 0x39, 0x31, 0x6b, 0x63, 0x37, 0x45, 0x55, 0x44, 0x57, 0x46];
let dataIv = new Uint8Array(arr);
let ivBlob: cryptoFramework.DataBlob = {
data: dataIv
};

let cbcParamsSpec: cryptoFramework.IvParamsSpec = {
iv: ivBlob,
algName: 'IvParamsSpec'
};
return cbcParamsSpec;
}
导入字符串密钥

```javascript
async function testGenerateAesKey(str:string) {
try {
let symKeyGenerator = cryptoFramework.createSymKeyGenerator('3DES192');
let keyBlob: cryptoFramework.DataBlob = { data: stringToUint8Array("Ac6jzpE2Ac6jzpE2Ac6jzpE2") }
let promiseSymKey = await symKeyGenerator.convertKey(keyBlob);
}catch (err){
console.error(err);
}
}
// 字符串转成字节流
function stringToUint8Array(str: string) {
return new Uint8Array(buffer.from(str,'utf-8').buffer);
}

更多关于HarmonyOS 鸿蒙Next 3DES加密,不支持设定自己的key?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这个函数加解密是异步的吧,只是一个加解密而已,直接返回字符串好了,为啥还整个回调返回最终的结果呢,(不太明白,刚刚学习鸿蒙开发),

这个aesEncrypt函数加密之后,返回的是Promise<string>类型,还要在这个Promise的then回调里面拿到结果吗?

在HarmonyOS鸿蒙Next中,3DES加密确实不支持用户自定义密钥。3DES加密算法的密钥长度固定为192位(24字节),系统会自动生成符合要求的密钥,而不是允许用户自行设定。这种做法主要是为了确保密钥的强度和安全性,避免因用户设定的密钥不符合安全规范而导致加密强度不足。因此,在鸿蒙Next中,开发者无法直接指定自己的密钥进行3DES加密操作。

回到顶部