关于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相关问题有人知道吗
1796浏览 • 1回复 待解决
taskpool 使用问题有人知道吗
874浏览 • 1回复 待解决
HarmonyOS Sm2和DES加解密问题
421浏览 • 1回复 待解决
状态管理相关问题有人知道吗?
633浏览 • 1回复 待解决
List组件性能问题有人知道吗
2047浏览 • 1回复 待解决
HarmonyOS 如何进行DES加解密
495浏览 • 1回复 待解决
APP UI设计标准问题有人知道吗/
811浏览 • 1回复 待解决
如何获取windowStage,有人知道吗
432浏览 • 1回复 待解决
如何实现振动,有人知道吗
1148浏览 • 2回复 待解决
有人知道吗
188浏览 • 1回复 待解决
如何发送短信,有人知道吗?
1893浏览 • 1回复 待解决
如何保存faultLogger ,有人知道吗
588浏览 • 1回复 待解决
webview组件demo ,有人知道吗
773浏览 • 1回复 待解决
如何跳出ForEach,有人知道吗
2033浏览 • 1回复 待解决
有人知道吗
610浏览 • 1回复 待解决
HarmonyOS 文档中没有查找到DES加解密
364浏览 • 1回复 待解决
求大佬告知如何进行des加解密
1922浏览 • 1回复 待解决
有人知道关于折叠机适配问题
1057浏览 • 1回复 待解决
$r是否支持嵌套,有人知道吗
320浏览 • 1回复 待解决
IP地址如何转化,有人知道吗
620浏览 • 1回复 待解决