开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 797|回复: 6
收起左侧

[讨论] Base64解码的一个奇怪问题

[复制链接]
结帖率:81% (29/36)
发表于 2023-11-14 17:05:01 | 显示全部楼层 |阅读模式   四川省泸州市
本帖最后由 Awesome·LYG 于 2023-11-14 17:06 编辑

这是一段拳头给出的base64编码:
[JavaScript] 纯文本查看 复制代码
eyJjb3VudHJ5IjoiaGtnIiwic3ViIjoiM2NkY2NkZjItZWU0Yi01ZjgwLThmN2UtZjhkZTYzNjk1M2NlIiwicHciOnsiY25nX2F0IjoxNjgxMTk4NzAzMDAwLCJyZXNldCI6ZmFsc2UsIm11c3RfcmVzZXQiOmZhbHNlfSwibG9sIjp7ImN1aWQiOjMyMTQyNDM2NzE1NDk1MDQsImNwaWQiOiJUVzIiLCJ1aWQiOjMyMTQyNDM2NzE1NDk1MDQsInBpZCI6IlRXMiIsImFwaWQiOm51bGwsInBsb2MiOiJ6aC1UVyIsImxwIjpmYWxzZSwiYWN0aXZlIjp0cnVlfSwib3JpZ2luYWxfcGxhdGZvcm1faWQiOiJUVzIiLCJpc3MiOiJodHRwczovL2F1dGgucmlvdGdhbWVzLmNvbSIsIm9yaWdpbmFsX2FjY291bnRfaWQiOjMyMTQyNDM2NzE1NDk1MDQsInByZWZlcnJlZF91c2VybmFtZSI6IjFsaWs4ZkhGIiwiYmFuIjp7InJlc3RyaWN0aW9ucyI6W119LCJwbGF5ZXJfbG9jYWxlIjoiemgtVFciLCJpYXQiOjE2OTk5NTA1NDYsImp0aSI6IkdNS0VsU2FTWG5JIiwibG9sX2FjY291bnQiOnsic3VtbW9uZXJfaWQiOjMyMTQyNDM2NzE1NDk1MDQsInByb2ZpbGVfaWNvbiI6MjksInN1bW1vbmVyX2xldmVsIjoxMCwic3VtbW9uZXJfbmFtZSI6IuiCpeWuhemYv-aftDI5MiJ9LCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInBsYXllcl9wbG9jYWxlIjpudWxsLCJjb3VudHJ5X2F0IjoxNjgxMTk4NzAyMDAwLCJwaG9uZV9udW1iZXJfdmVyaWZpZWQiOmZhbHNlLCJwaG90byI6Imh0dHBzOi8vYXZhdGFyLmxlYWd1ZW9mbGVnZW5kcy5jb20vdHcyLyVFOCU4MiVBNSVFNSVBRSU4NSVFOSU5OCVCRiVFNiU5RiVCNDI5Mi5wbmciLCJhY2NvdW50X3ZlcmlmaWVkIjpmYWxzZSwicHBpZCI6bnVsbCwiYXVkIjoibG9sIiwibG9sX3JlZ2lvbiI6W3siY3VpZCI6MzIxNDI0MzY3MTU0OTUwNCwiY3BpZCI6IlRXMiIsInVpZCI6MzIxNDI0MzY3MTU0OTUwNCwicGlkIjoiVFcyIiwibHAiOmZhbHNlLCJhY3RpdmUiOnRydWV9XSwicHZwbmV0X2FjY291bnRfaWQiOjMyMTQyNDM2NzE1NDk1MDQsInJlZ2lvbiI6eyJsb2NhbGVzIjpudWxsLCJpZCI6IlRXMiIsInRhZyI6InR3MiJ9LCJhY2N0Ijp7InR5cGUiOjAsInN0YXRlIjoiRU5BQkxFRCIsImFkbSI6ZmFsc2UsImdhbWVfbmFtZSI6IuiCpeWuhemYv-aftDI5MiIsInRhZ19saW5lIjoiVFcyIiwiY3JlYXRlZF9hdCI6MTY4MTE5ODcwMjAwMH0sImFnZSI6MzIsInVzZXJuYW1lIjoiMWxpazhmSEYiLCJhZmZpbml0eSI6eyJwcCI6ImFzIn19


精易模块的编码_BASE64解码和编码_BASE64解码A这2个命令,解码出来给出了2个不同的编码。

编码_BASE64解码 给出的结果是ansi编码,写到本地看也是ansi编码,导致summoner_name和game_name这2个参数的玩家名字是乱码的;
编码_BASE64解码A 给出的结果是utf8编码,这个应该是对的,summoner_name和game_name参数的玩家名字也是对的
  
子程序名返回值类型公开备 注
BASE64_1111  
变量名类 型静态数组备 注
文本文本型 
解码后字节集 
文本2文本型 
文本 = “eyJjb3VudHJ5IjoiaGtnIiwic3ViIjoiM2NkY2NkZjItZWU0Yi01ZjgwLThmN2UtZjhkZTYzNjk1M2NlIiwicHciOnsiY25nX2F0IjoxNjgxMTk4NzAzMDAwLCJyZXNldCI6ZmFsc2UsIm11c3RfcmVzZXQiOmZhbHNlfSwibG9sIjp7ImN1aWQiOjMyMTQyNDM2NzE1NDk1MDQsImNwaWQiOiJUVzIiLCJ1aWQiOjMyMTQyNDM2NzE1NDk1MDQsInBpZCI6IlRXMiIsImFwaWQiOm51bGwsInBsb2MiOiJ6aC1UVyIsImxwIjpmYWxzZSwiYWN0aXZlIjp0cnVlfSwib3JpZ2luYWxfcGxhdGZvcm1faWQiOiJUVzIiLCJpc3MiOiJodHRwczovL2F1dGgucmlvdGdhbWVzLmNvbSIsIm9yaWdpbmFsX2FjY291bnRfaWQiOjMyMTQyNDM2NzE1NDk1MDQsInByZWZlcnJlZF91c2VybmFtZSI6IjFsaWs4ZkhGIiwiYmFuIjp7InJlc3RyaWN0aW9ucyI6W119LCJwbGF5ZXJfbG9jYWxlIjoiemgtVFciLCJpYXQiOjE2OTk5NTA1NDYsImp0aSI6IkdNS0VsU2FTWG5JIiwibG9sX2FjY291bnQiOnsic3VtbW9uZXJfaWQiOjMyMTQyNDM2NzE1NDk1MDQsInByb2ZpbGVfaWNvbiI6MjksInN1bW1vbmVyX2xldmVsIjoxMCwic3VtbW9uZXJfbmFtZSI6IuiCpeWuhemYv-aftDI5MiJ9LCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInBsYXllcl9wbG9jYWxlIjpudWxsLCJjb3VudHJ5X2F0IjoxNjgxMTk4NzAyMDAwLCJwaG9uZV9udW1iZXJfdmVyaWZpZWQiOmZhbHNlLCJwaG90byI6Imh0dHBzOi8vYXZhdGFyLmxlYWd1ZW9mbGVnZW5kcy5jb20vdHcyLyVFOCU4MiVBNSVFNSVBRSU4NSVFOSU5OCVCRiVFNiU5RiVCNDI5Mi5wbmciLCJhY2NvdW50X3ZlcmlmaWVkIjpmYWxzZSwicHBpZCI6bnVsbCwiYXVkIjoibG9sIiwibG9sX3JlZ2lvbiI6W3siY3VpZCI6MzIxNDI0MzY3MTU0OTUwNCwiY3BpZCI6IlRXMiIsInVpZCI6MzIxNDI0MzY3MTU0OTUwNCwicGlkIjoiVFcyIiwibHAiOmZhbHNlLCJhY3RpdmUiOnRydWV9XSwicHZwbmV0X2FjY291bnRfaWQiOjMyMTQyNDM2NzE1NDk1MDQsInJlZ2lvbiI6eyJsb2NhbGVzIjpudWxsLCJpZCI6IlRXMiIsInRhZyI6InR3MiJ9LCJhY2N0Ijp7InR5cGUiOjAsInN0YXRlIjoiRU5BQkxFRCIsImFkbSI6ZmFsc2UsImdhbWVfbmFtZSI6IuiCpeWuhemYv-aftDI5MiIsInRhZ19saW5lIjoiVFcyIiwiY3JlYXRlZF9hdCI6MTY4MTE5ODcwMjAwMH0sImFnZSI6MzIsInVzZXJuYW1lIjoiMWxpazhmSEYiLCJhZmZpbml0eSI6eyJwcCI6ImFzIn19”
解码后 = 编码_BASE64解码 (文本)
写到文件 (取特定目录 (3)“\解码后文本1.txt”, 解码后)
解码后 = 编码_BASE64解码A (到字节集 (文本))
写到文件 (取特定目录 (3)“\解码后文本2.txt”, 解码后)


i支持库列表   支持库注释   
shell操作系统界面功能支持库


我以为编码_BASE64解码命令的问题,导致utf8编码他解码出来是ansi,然后写了个测试子程序:
  
子程序名返回值类型公开备 注
BASE64_test  
变量名类 型静态数组备 注
文本文本型 
解码后字节集 
文本2文本型 
文本 = “123测试123”
文本2 = 到文本 (编码_BASE64编码A (编码_Ansi到Utf8 (文本)))
调试输出 (文本2)
解码后 = 编码_BASE64解码 (文本2)
写到文件 (取特定目录 (3)“\解码后文本1.txt”, 解码后)
解码后 = 编码_BASE64解码A (到字节集 (文本2))
写到文件 (取特定目录 (3)“\解码后文本2.txt”, 解码后)


i支持库列表   支持库注释   
spec特殊功能支持库
shell操作系统界面功能支持库


结果发现这样他输出也是utf8编码的文本,所以我现在懵了,前面那个文本他为啥解码出来是ansi编码?

评分

参与人数 1好评 +1 精币 +5 收起 理由
Suky + 1 + 5 感谢分享

查看全部评分

本帖被以下淘专辑推荐:

签到天数: 17 天

发表于 2023-11-14 19:25:43 | 显示全部楼层   湖南省怀化市
学习了
回复 支持 反对

使用道具 举报

结帖率:100% (32/32)

签到天数: 16 天

发表于 2023-11-14 18:42:27 | 显示全部楼层   山东省枣庄市
本帖最后由 決不放棄 于 2023-11-14 19:25 编辑
Awesome·LYG 发表于 2023-11-14 18:38
编码都不一样,字节集长度肯定不一样,现在的问题是他怎么会解码成ansi编码的 ...

?你没看明白吗?字节集长度一样,只是在第589 590 591这三个字节和1111 1112 1113这三个字节解码出的结果不一样,而原因我已经在楼层中回复了
而且它并没有解成ANSI编码,它还是UTF8,只不过是错误的UTF8,导致文本编辑器无法正确识别出编码。

回复 支持 反对

使用道具 举报

结帖率:81% (29/36)

签到天数: 21 天

 楼主| 发表于 2023-11-14 18:38:45 | 显示全部楼层   四川省泸州市
決不放棄 发表于 2023-11-14 18:06
因为编码_BASE64解码解出的字节集不正确:
[e=1].版本 2
.支持库 spec

编码都不一样,字节集长度肯定不一样,现在的问题是他怎么会解码成ansi编码的
回复 支持 反对

使用道具 举报

结帖率:100% (32/32)

签到天数: 16 天

发表于 2023-11-14 18:33:22 | 显示全部楼层   山东省枣庄市
Suky 发表于 2023-11-14 18:19
这样说的话……
我觉得可以试试能不能修复

原因嘛就是因为是"url safe"的base64编码,示例中的base64把+换成-了,而标准的base64是不包含-的,导致解码错误
回复 支持 反对

使用道具 举报

结帖率:100% (18/18)

签到天数: 22 天

发表于 2023-11-14 18:19:16 | 显示全部楼层   福建省泉州市
決不放棄 发表于 2023-11-14 18:06
因为编码_BASE64解码解出的字节集不正确:
[e=1].版本 2
.支持库 spec

这样说的话……
我觉得可以试试能不能修复
回复 支持 反对

使用道具 举报

结帖率:100% (32/32)

签到天数: 16 天

发表于 2023-11-14 18:06:15 | 显示全部楼层   山东省枣庄市
因为编码_BASE64解码解出的字节集不正确:
  
子程序名返回值类型公开备 注
_启动子程序整数型 
变量名类 型静态数组备 注
text文本型 
bin1字节集 
bin2字节集 
i整数型 
text = “eyJjb3VudHJ5IjoiaGtnIiwic3ViIjoiM2NkY2NkZjItZWU0Yi01ZjgwLThmN2UtZjhkZTYzNjk1M2NlIiwicHciOnsiY25nX2F0IjoxNjgxMTk4NzAzMDAwLCJyZXNldCI6ZmFsc2UsIm11c3RfcmVzZXQiOmZhbHNlfSwibG9sIjp7ImN1aWQiOjMyMTQyNDM2NzE1NDk1MDQsImNwaWQiOiJUVzIiLCJ1aWQiOjMyMTQyNDM2NzE1NDk1MDQsInBpZCI6IlRXMiIsImFwaWQiOm51bGwsInBsb2MiOiJ6aC1UVyIsImxwIjpmYWxzZSwiYWN0aXZlIjp0cnVlfSwib3JpZ2luYWxfcGxhdGZvcm1faWQiOiJUVzIiLCJpc3MiOiJodHRwczovL2F1dGgucmlvdGdhbWVzLmNvbSIsIm9yaWdpbmFsX2FjY291bnRfaWQiOjMyMTQyNDM2NzE1NDk1MDQsInByZWZlcnJlZF91c2VybmFtZSI6IjFsaWs4ZkhGIiwiYmFuIjp7InJlc3RyaWN0aW9ucyI6W119LCJwbGF5ZXJfbG9jYWxlIjoiemgtVFciLCJpYXQiOjE2OTk5NTA1NDYsImp0aSI6IkdNS0VsU2FTWG5JIiwibG9sX2FjY291bnQiOnsic3VtbW9uZXJfaWQiOjMyMTQyNDM2NzE1NDk1MDQsInByb2ZpbGVfaWNvbiI6MjksInN1bW1vbmVyX2xldmVsIjoxMCwic3VtbW9uZXJfbmFtZSI6IuiCpeWuhemYv-aftDI5MiJ9LCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInBsYXllcl9wbG9jYWxlIjpudWxsLCJjb3VudHJ5X2F0IjoxNjgxMTk4NzAyMDAwLCJwaG9uZV9udW1iZXJfdmVyaWZpZWQiOmZhbHNlLCJwaG90byI6Imh0dHBzOi8vYXZhdGFyLmxlYWd1ZW9mbGVnZW5kcy5jb20vdHcyLyVFOCU4MiVBNSVFNSVBRSU4NSVFOSU5OCVCRiVFNiU5RiVCNDI5Mi5wbmciLCJhY2NvdW50X3ZlcmlmaWVkIjpmYWxzZSwicHBpZCI6bnVsbCwiYXVkIjoibG9sIiwibG9sX3JlZ2lvbiI6W3siY3VpZCI6MzIxNDI0MzY3MTU0OTUwNCwiY3BpZCI6IlRXMiIsInVpZCI6MzIxNDI0MzY3MTU0OTUwNCwicGlkIjoiVFcyIiwibHAiOmZhbHNlLCJhY3RpdmUiOnRydWV9XSwicHZwbmV0X2FjY291bnRfaWQiOjMyMTQyNDM2NzE1NDk1MDQsInJlZ2lvbiI6eyJsb2NhbGVzIjpudWxsLCJpZCI6IlRXMiIsInRhZyI6InR3MiJ9LCJhY2N0Ijp7InR5cGUiOjAsInN0YXRlIjoiRU5BQkxFRCIsImFkbSI6ZmFsc2UsImdhbWVfbmFtZSI6IuiCpeWuhemYv-aftDI5MiIsInRhZ19saW5lIjoiVFcyIiwiY3JlYXRlZF9hdCI6MTY4MTE5ODcwMjAwMH0sImFnZSI6MzIsInVzZXJuYW1lIjoiMWxpazhmSEYiLCJhZmZpbml0eSI6eyJwcCI6ImFzIn19”
bin1 = 编码_BASE64解码A (到字节集 (text))
bin2 = 编码_BASE64解码 (text, )
调试输出 (取字节集长度 (bin1), 取字节集长度 (bin2), bin1 = bin2)
计次循环首 (取字节集长度 (bin1), i)
如果真 (bin1 [i] ≠ bin2 [i])
调试输出 (i, bin1 [i], bin2 [i])

计次循环尾 ()


i支持库列表   支持库注释   
spec特殊功能支持库


输出:
* 1218 | 1218 | 假
* 589 | 191 | 190
* 590 | 230 | 217
* 591 | 159 | 152
* 1111 | 191 | 190
* 1112 | 230 | 217
* 1113 | 159 | 152

评分

参与人数 1好评 +1 精币 +5 收起 理由
Suky + 1 + 5 新技能已get√

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表