HarmonyOS 鸿蒙Next 3DES的key长度不符合

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 3DES的key长度不符合

3DES加解密相关,我这边服务端提供的key长度是32位,但是官方代码要求生成key必须是3DES192,也就是24位,这个如何解决 

2 回复

3des的key长度超过24的话只能使用三方库crypto-js 来实现这个32位密钥长度的加解密能力 以下为crypto-js的代码3des cbc demo实例

import CryptoJS from '@ohos/crypto-js'

@Entry

@Component

struct TDes3Crypto {

  @State message: string = '点击开始';

  build() {

    Row() {

      Column() {

        Text(this.message)

          .fontSize(50)

          .fontWeight(FontWeight.Bold)

          .onClick(() => {

            DES3Crypto()

          })

      }

      .width('100%')

    }

    .height('100%')

  }

}

function DES3Crypto() {

  let str: string = "2011536858";

  let key: string = "040cb7f97484de8ade3e0cce9ac52396";

  let UTF8key: string = CryptoJS.enc.Hex.parse(key);

  let encrypted: string = CryptoJS.TripleDES.encrypt(str, UTF8key, {

    mode: CryptoJS.mode.CBC,

    padding: CryptoJS.pad.Pkcs5,

    iv: CryptoJS.enc.Hex.parse('202012$6')

  }).ciphertext.toString(CryptoJS.enc.Base64);

  console.log("...TripleDES encrypt:" + encrypted);

  let decrypted: string = CryptoJS.TripleDES.decrypt(encrypted, UTF8key, {

    mode: CryptoJS.mode.CBC,

    padding: CryptoJS.pad.Pkcs5,

    iv: CryptoJS.enc.Hex.parse('202012$6')

  }).toString(CryptoJS.enc.Utf8);

  console.log("...TripleDES decrypt:" + decrypted);

}

更多关于HarmonyOS 鸿蒙Next 3DES的key长度不符合的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next 3DES(Triple DES,即三重数据加密算法)的key长度要求为168位(即24字节),或者在某些实现中接受密钥长度为112位(16字节)或56位(8字节)的版本,但通常推荐使用168位以确保最高的安全性。如果你遇到“key长度不符合”的错误,很可能是因为你提供的密钥长度不符合这些标准。

请检查你的密钥生成或指定逻辑,确保密钥长度符合3DES的要求。例如,如果你使用的是API来设置密钥,确保传递的密钥字节数组长度为24字节。如果你使用的是字符串形式的密钥,请确认字符串在编码为字节数组后的长度也符合标准。

此外,注意检查是否有任何库或框架特定的要求,因为某些实现可能对密钥长度有额外的限制或校验。

如果确认密钥长度无误,但问题依旧存在,可能是其他配置或代码逻辑问题导致。此时,建议直接查阅HarmonyOS官方文档中关于3DES加密的具体实现要求和示例代码,确保所有步骤均正确无误。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部