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;
  }
}

这是加密串:OzYCF_IllNQ15qWToLHF4hk8kstC2mIA8xXHaDFZHMnoE-MfWSYYYprJUUjemi58xsnqQ_GL5A9uDvzddAGBfQ

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

HarmonyOS
1天前
浏览
收藏 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("-","+")
分享
微博
QQ
微信
回复
1天前
相关问题
des解密同步方法解密失败
213浏览 • 1回复 待解决
HarmonyOS Sm2和DES解密问题
512浏览 • 1回复 待解决
HarmonyOS 如何进行DES解密
598浏览 • 1回复 待解决
HarmonyOS 关于DES解密的疑问
34浏览 • 1回复 待解决
HarmonyOS 3des解密失败
21浏览 • 1回复 待解决
HarmonyOS 使用DES解密,转换 smkey失败
506浏览 • 1回复 待解决
关于3des解密问题,有人知道吗?
229浏览 • 1回复 待解决
HarmonyOS 文档中没有查找到DES解密
406浏览 • 1回复 待解决
求大佬告知如何进行des解密
1958浏览 • 1回复 待解决
HarmonyOS RSA解密问题
490浏览 • 1回复 待解决
HarmonyOS解密问题
48浏览 • 1回复 待解决
关于DES加密的设置问题
252浏览 • 1回复 待解决
HarmonyOS AES加解密问题
35浏览 • 1回复 待解决