Base64加解密JSON内容不完整 原创
头像 烈火 2025-11-11 22:06:37    发布
21506 浏览 568 点赞 1 收藏

在鸿蒙开发过程发现了一个好玩儿的Base64加解密片段,需求是有一段Json需要Base64的解密。在通过官方文档代码写到测试时发现最后解密后的json不正确,总少半个花括号“}”。

官方示例:

static decode(content: string): string {
let base64Helper = new util.Base64Helper();
let uint8Array = base64Helper.decodeSync(content, util.Type.MIME);
let result = Base64Util.unit8ArrayToString(uint8Array);
return result
}

static unit8ArrayToString(arr: Uint8Array): string {
let str = ''
if (arr && arr.length > 0) {
try {
let textDecode = util.TextDecoder.create("utf-8")
str = textDecode.decodeToString(arr)
} catch (err) {

}
}
return str
}

尝试一:对于原json串进行加密后发现“}”是fQ==,而我服务器获取到的是fQ。通过上面示例去角fQ就是空字符串的结果,而fQ==就是“}”正确的半个花括号。

尝试二:对于服务器返回的加密json串进行Android对比解码,发现fQ就是正常的半个花括号。安卓代码如下:

public static String base64Decode(String string) {

String decode = new String(Base64.decode(string.getBytes(), Base64.DEFAULT));
return decode;
}

这最就是去怀疑base64Helper.decodeSync(content, util.Type.MIME)中的util.Type.MIME具体是否有影响了,官方秋意如下:

HarmonyOS使用的Base64函数来源于@ohos/util,该函数的encodeToStringSync方法Type有四种。 
当参数取值为util.Type.BASIC,表示Base64编码,返回值没有回车符、换行符。 
当参数取值为util.Type.MIME,表示Base64编码,返回值每一行不超过76个字符,而且每行以'\r\n'符结束。
当参数取值为util.Type.BASIC_URL_SAFE,表示Base64URL编码,返回值没有回车符、换行符。 
当参数取值为util.Type.MIME_URL_SAFE,表示Base64URL编码,返回值每一行不超过76个字符,而且每行以'\r\n'符结束。

经过最后测试发现换成util.Type.BASIC_URL_SAFE后就正常了,这样与服务器数据对齐Json就可正常解析了。

©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
IDE

暂无评论数据

发布

头像

烈火

青春一去不复返,事业一纵永无成。

10

帖子

1

提问

2239

粉丝

关注
最新发布

HarmonyOS V1到V2迁移,好用!

2026-01-07 15:58:35    发布

CodeGenie分析

2026-01-07 15:41:28    发布
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255