关于3des加解密问题,有人知道吗?

项目中有用到3des加解密,key值为字符串"1e8ba4cb858a7f157f96fc48801b324d858a7f453f96fc55"这种长度格式 ,在HarmonyOS中测试时出现问题,执行不下去,测试加密代码如下:

let arr = Array<number>(); 
for (let i = 0, j = str.length; i < j; ++i) { 
  arr.push(str.charCodeAt(i)); 
} 
return new Uint8Array(arr); 
} 
async testEncode() { 
  let arr = this.stringToUnit8Array("1e8ba4cb858a7f157f96fc48801b324d858a7f453f96fc55"); 
 
  let encodeArr = this.stringToUnit8Array("yyy"); 
  let strBlob: cryptoFramework.DataBlob = { data: encodeArr } 
 
 
  let KeyBlob: cryptoFramework.DataBlob = { data: arr } 
  let symKeyGenerator = cryptoFramework.createSymKeyGenerator('3DES192'); 
 
 
  const symKey = await symKeyGenerator.convertKey(KeyBlob); 
 
  // 3. 创建加解密生成器。 
  let cipher = cryptoFramework.createCipher('3DES192'); 
 
  // 4. 通过加解密生成器加密或解密数据。(写成16进制或10进制都行) 
  await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null); 
  // 5. 开始处理加密或解密 
  let result = await cipher.doFinal(strBlob); 
 
  let encodeStr = StrAndUintUtil.unit8ArrayToString(result.data); 
  console.log('加密结果:' + encodeStr) 
}

执行到await symKeyGenerator.convertKey(KeyBlob)这边就不往下走了。

HarmonyOS
2024-11-11 09:16:14
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

参考demo:

function aesEncrypt(text: string, key: string, iv: string): string { 
  let globalResult = "" 
  try { 
    let globalCipher = cryptoFramework.createCipher("3DES192|ECB|PKCS5"); 
    let symKeyGenerator = cryptoFramework.createSymKeyGenerator("3DES192"); 
    let keyBlob: cryptoFramework.DataBlob = { data: HexStrTouint8Array("1e8ba4cb858a7f157f96fc48801b324d858a7f453f96fc55") } 
    let promiseSymKey = symKeyGenerator.convertKeySync(keyBlob) 
 
    //传入业务的偏移量(选择CBC模式时需要传此参数) 
    // let cbcParamsSpec: cryptoFramework.IvParamsSpec = { 
    // iv: { data: new Uint8Array() }, 
    // algName: 'IvParamsSpec' 
    // }; 
    // cbcParamsSpec.iv = { data: stringToUint8Array(iv) } 
 
    //初始化 选择CBC模式时需要传此参数 ECB模式传null即可 
    globalCipher.initSync(cryptoFramework.CryptoMode.ENCRYPT_MODE, promiseSymKey, null); 
    let plainText: cryptoFramework.DataBlob = { data: stringToUint8Array(text) } 
    let result = globalCipher.doFinalSync(plainText) 
    globalResult = base.encodeToStringSync(result.data); 
  } catch (err) { 
    console.log("error log" + err.message) 
  } 
  return globalResult; 
} 
//十六进制转Uint8Array 
export function HexStrTouint8Array(data: string): Uint8Array { 
  return new Uint8Array(buffer.from(data, 'hex').buffer); 
} 
// 字符串转成字节流 
export function stringToUint8Array(str: string) { 
  return new Uint8Array(buffer.from(str,'utf-8').buffer); 
}
分享
微博
QQ
微信
回复
2024-11-11 16:02:33
相关问题
clientid相关问题有人知道吗
1839浏览 • 1回复 待解决
taskpool 使用问题有人知道吗
891浏览 • 1回复 待解决
状态管理相关问题有人知道吗?
663浏览 • 1回复 待解决
List组件性能问题有人知道吗
2069浏览 • 1回复 待解决
HarmonyOS Sm2和DES加解密问题
456浏览 • 1回复 待解决
HarmonyOS 如何进行DES加解密
555浏览 • 1回复 待解决
APP UI设计标准问题有人知道吗/
857浏览 • 1回复 待解决
如何获取windowStage,有人知道吗
461浏览 • 1回复 待解决
如何实现振动,有人知道吗
1166浏览 • 2回复 待解决
如何发送短信,有人知道吗?
1920浏览 • 1回复 待解决
如何跳出ForEach,有人知道吗
2063浏览 • 1回复 待解决
如何保存faultLogger ,有人知道吗
622浏览 • 1回复 待解决
有人知道吗
657浏览 • 1回复 待解决
webview组件demo ,有人知道吗
793浏览 • 1回复 待解决
有人知道吗
230浏览 • 1回复 待解决
ArkTS要如何使用this,有人知道吗
523浏览 • 1回复 待解决
IP地址如何转化,有人知道吗
639浏览 • 1回复 待解决
如何获取系统电量,有人知道吗
2041浏览 • 1回复 待解决
怎么主动关闭键盘,有人知道吗
432浏览 • 1回复 待解决
如何获取组件高度,有人知道吗
2103浏览 • 1回复 待解决