3DES如何根据指定KEY、IV生成SymKey对称秘钥?

3DES如何根据指定KEY、IV生成SymKey对称秘钥?

HarmonyOS
2024-06-05 23:29:23
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
e_leaner

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

//加密 
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; 
}

导入字符串密钥:

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); 
}
分享
微博
QQ
微信
回复
2024-06-06 23:09:42
相关问题
使用32字节加解密后报错
467浏览 • 1回复 待解决
如何通过uuid生成、md5、RSA、AES、 DES
438浏览 • 1回复 待解决
实现一次非对称RSA非对称加解密
436浏览 • 1回复 待解决
如何解析m3u8中的EXT-X-KEY字段
712浏览 • 1回复 待解决
求大佬告知如何进行des加解密
423浏览 • 1回复 待解决
如何找出Redis中的大Key与热Key
1496浏览 • 1回复 待解决
如何根据uri读取文件?
1561浏览 • 1回复 待解决
XamarinStudio如何生成mdb文件?
850浏览 • 1回复 待解决
如何实现RSA的公PK加密一段文字
147浏览 • 1回复 待解决
如何根据环境控制日志输出级别
668浏览 • 1回复 待解决
鸿蒙如何根据Component 得到bitmap呢
3690浏览 • 1回复 待解决
OBD部署OBserver如何指定版本?
4503浏览 • 1回复 待解决
ArkTS 如何生成如下的 uuid呢?
345浏览 • 1回复 待解决
有谁知道如何生成UUID
463浏览 • 1回复 待解决
如何生成UUID的字符串
716浏览 • 1回复 待解决
如何使用脚本编译生成HAP文件
5953浏览 • 1回复 待解决
如何使用deveco 生成app文件啊
8384浏览 • 1回复 待解决
是否有支持非对称加密的三方库?
552浏览 • 1回复 待解决