HarmonyOS 鸿蒙Next当加密内容包含中文时,加密结果与Java侧加密结果不同

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

HarmonyOS 鸿蒙Next当加密内容包含中文时,加密结果与Java侧加密结果不同

当加密内容包含中文时,加密结果与Java侧加密结果不同。
```
2 回复

加密内容需要进行转uint8Array,请尝试以下代码进行转换:

// 字符串转成字节流

function stringToUint8Array(str) {
    return new Uint8Array(buffer.from(str,'utf-8').buffer);
}

// 字节流转成可理解的字符串

function uint8ArrayToString(array){
    let out = '';
    let index = 0;
    let len = array.length;
    while(index < len){
        switch((array[index] >> 4)){
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
                out += String.fromCharCode(array[index]);
                break;
            case 12:
            case 13:
                out += String.fromCharCode((((array[index] & 0x1f) << 6) | (array[++index] & 0x3f)));
                break;
            case 14:
                out += String.fromCharCode((((array[index] & 0xf) << 12) | (((array[++index] & 0x3f) << 6) | (array[++index] & 0x3f))));
                break;
            default:
                break;
        }
        index++;
    }
    return out;
}

更多关于HarmonyOS 鸿蒙Next当加密内容包含中文时,加密结果与Java侧加密结果不同的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS鸿蒙Next在加密内容包含中文时与Java侧加密结果不同的问题,这通常是由编码方式或加密库实现细节上的差异导致的。

在鸿蒙系统中进行加密时,如果输入包含中文,需要确保中文内容在加密前的编码方式与Java侧保持一致。常见的编码方式包括UTF-8、GBK等,不同的编码方式会将中文字符转换成不同的字节序列,从而影响加密结果。

检查以下几点可能有助于解决问题:

  1. 确认编码方式:确保鸿蒙端和Java端在加密前对中文内容使用了相同的编码方式。
  2. 加密库版本与实现:检查鸿蒙端和Java端使用的加密库版本是否一致,以及是否有已知的实现差异。
  3. 加密参数:确认加密算法的参数(如密钥、初始化向量等)在两端是否完全一致。

如果经过上述检查后问题仍未解决,可能是由于鸿蒙系统或Java加密库在处理特定字符集时的内部实现差异所致。此时,可以尝试调整加密前的预处理步骤,如使用统一的编码转换工具,或者考虑在两端实现自定义的加密逻辑以确保一致性。

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

回到顶部