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
标签
加解密
暂无评论数据
发布
相关推荐
Canvas绘制内容怎么更新?
鸿蒙小助手
2209
0鸿蒙6.0.0.130公测升级推送,畅享70X可升级,内容有这些
程序员小葵
7820
0鸿蒙6.0新版本升级增加多款新机型,升级内容有这些,增加多个新功能
老刘学新框架
9487
0[HarmonyOS][K老师]实现防止应用窗口内容被截屏或录屏的功能这么做。
10947
0
烈火
青春一去不复返,事业一纵永无成。
10
帖子
1
提问
2239
粉丝
最新发布
HarmonyOS V1到V2迁移,好用!
2026-01-07 15:58:35 发布CodeGenie分析
2026-01-07 15:41:28 发布热门推荐