HarmonyOS CryptoJS Des解密问题

使用"@ohos/crypto-js": "^2.0.3"进行解密,这是解密的代码:

declare interface KeyOption {
  value: string,
  key?: string
}

export class CryptoUtil {
  private static readonly secretKey:string = "tcxyctxy";
  private static readonly uintArray = new Uint8Array([1,2,3,4,5,6,7,8])

  static encrypt(params:KeyOption):string{
    let key:string = (params.key == undefined || params.key.length === 0) ? CryptoUtil.secretKey : params.key;
    if (params.value.length === 0){
      return "";
    };
    const encryptStr: string = CryptoJS.DES.encrypt(
      params.value,
      CryptoJS.enc.Utf8.parse(key),
      {
        iv:CryptoJS.lib.WordArray.create(CryptoUtil.uintArray),
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
      }
    ).toString();
    return encryptStr;
  }

  static decrypt(params:KeyOption):string{
    LogUtil.error(`decrypt入参:${params.value}`)
    let key:string = (params.key == undefined || params.key.length === 0) ? CryptoUtil.secretKey : params.key;
    if (params.value.length === 0){
      return "";
    };
    let result: string = CryptoJS.enc.Utf8.stringify(
      CryptoJS.DES.decrypt(
        params.value,
        CryptoJS.enc.Utf8.parse(key),
        {
          iv:CryptoJS.lib.WordArray.create(CryptoUtil.uintArray),
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7
        }
      )
    );
    LogUtil.error(`decrypt结果:${result}`)
    return result;
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.

这是加密串:OzYCF_IllNQ15qWToLHF4hk8kstC2mIA8xXHaDFZHMnoE-MfWSYYYprJUUjemi58xsnqQ_GL5A9uDvzddAGBfQ

上面解密得到的结果是:登录失败,账号与密码错误或者该账号被禁用!但是在HarmonyOS上面解密得的结果却是\udb05\udee8\u0012˼v\ud963\udd26\u001f�楏��密码锠ޤ+(ꑀ泌��˚:Zgԫ\u001f¼;应该怎么修改代码才能得到正确的结果?

HarmonyOS
2024-12-25 09:26:41
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
shlp

用@ohos/crypto-js 加密“登录失败,账号与密码错误或者该账号被禁用!”得到的字符串为“OzYCF/IllNQ15qWToLHF4hk8kstC2mIA8xXHaDFZHMnoE+MfWSYYYprJUUjemi58xsnqQ/GL5A9uDvzddAGBfQ==”

后端返回的加密字符串为“OzYCF_IllNQ15qWToLHF4hk8kstC2mIA8xXHaDFZHMnoE-MfWSYYYprJUUjemi58xsnqQ_GL5A9uDvzddAGBfQ”只有特殊符号对不上,看下有对特殊符号进行过处理吗?

URL安全的Base64编码适用于以URL方式传递Base64编码结果的场景。

该编码方式的基本过程是先将内容以Base64格式编码为字符串,然后检查该结果字符串,将字符串中的加号+换成中划线-,并且将斜杠/换成下划线_,可以参考下面链接:https://www.cnblogs.com/shanyou/p/5474647.html对服务器返回的字符串做下处理,再试试看:

str = str.replaceAll("_","/").replaceAll("-","+")
  • 1.
分享
微博
QQ
微信
回复
2024-12-25 11:52:59


相关问题
HarmonyOS DES解密
478浏览 • 1回复 待解决
des解密同步方法解密失败
884浏览 • 1回复 待解决
HarmonyOS Sm2和DES解密问题
1436浏览 • 1回复 待解决
HarmonyOS 使用DES解密,转换 smkey失败
972浏览 • 1回复 待解决
HarmonyOS 3DES解密示例
928浏览 • 1回复 待解决
关于3des解密问题,有人知道吗?
1113浏览 • 1回复 待解决
HarmonyOS 如何进行DES解密
1527浏览 • 1回复 待解决
HarmonyOS 3des解密失败
646浏览 • 1回复 待解决
HarmonyOS 关于DES解密的疑问
899浏览 • 1回复 待解决
HarmonyOS 文档中没有查找到DES解密
968浏览 • 1回复 待解决
求大佬告知如何进行des解密
2529浏览 • 1回复 待解决
HarmonyOS 如何做md5加密和DES解密
1285浏览 • 1回复 待解决
HarmonyOS RSA解密问题
1073浏览 • 1回复 待解决
HarmonyOS解密问题
950浏览 • 1回复 待解决