HarmonyOS鸿蒙Next中AES加密CBC模式加密后在控制台打印出来是乱码
HarmonyOS鸿蒙Next中AES加密CBC模式加密后在控制台打印出来是乱码 为啥加密后得出来的加密串在控制台那里打印出来是乱码
let encryptText = await this.encryptMessagePromise(symKey, plainText);
console.info('加密encryptText====' + buffer.from(encryptText.data).toString('utf-8'));
加密encryptText==== ΓšuhUΩ�
解密decryptText====This is a test
更多关于HarmonyOS鸿蒙Next中AES加密CBC模式加密后在控制台打印出来是乱码的实战教程也可以访问 https://www.itying.com/category-93-b0.html
字符串转byte数组参考以下方法。
function stringToArray(str:string) {
let arr: Array<number> = [];
for(let i = 0,j = str.length;i<j;++i) {
arr.push(str.charCodeAt(i))
}
return arr;
}
使用UTF-8等其他编码格式时,可以使用@ohos.utils里的方法:TextEncoder 与 TextDecoder,实现字节数组与字符串的转化,具体可参考:@ohos.util (util工具函数)-ArkTS API-ArkTS(方舟编程语言)-应用框架 - 华为HarmonyOS开发者
乱码问题可以将
修改为
目前对称加解密中,PKCS5和PKCS7的实现相同,其padding长度和分组长度保持一致(即PKCS5和PKCS7在3DES中均按照8字节填充,在AES中均按照16字节填充),另有NoPadding表示不填充。
更多关于HarmonyOS鸿蒙Next中AES加密CBC模式加密后在控制台打印出来是乱码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中使用AES加密CBC模式加密后,控制台打印出乱码是正常现象。AES加密后的输出是二进制数据,直接打印到控制台会显示为乱码。这是因为控制台通常以文本形式显示数据,而加密后的数据不一定是可打印的字符。
要正确显示加密结果,可以将加密后的二进制数据转换为十六进制字符串或Base64编码。十六进制字符串将每个字节转换为两个十六进制字符,Base64编码则将二进制数据转换为可打印的ASCII字符。这两种方式都能避免乱码问题。
例如,使用Base64编码后的字符串可以直接在控制台打印,显示为可读的字符序列。如果需要进一步处理或传输加密数据,Base64编码也是常用的格式。
总结:AES加密后的二进制数据直接打印会出现乱码,建议将其转换为十六进制或Base64编码后再打印。
在HarmonyOS鸿蒙Next中使用AES加密CBC模式加密后,控制台打印乱码是因为加密后的数据是二进制格式,无法直接以字符串形式显示。建议将加密结果转换为Base64或Hex编码后再打印。例如,使用Base64.encodeToString()
或Hex.encodeHexString()
进行转换,这样可以在控制台清晰查看加密后的数据。