studyTime:
nxcUhOHtnq8U5OiQFRyVIQ==
lessonLocation:
KuT9XK4MVaizQbjef2R+ug==
studyTime:
0oA/lBN+vUvGhhYXmElIlQ==
lessonLocation:
TlUnVu8KwPj09tCjakR66Q==
studyTime:
XU7cDi+6eAuZvwFTaHHFzw==
lessonLocation:
BRpMW/INcTNMp4c80DWX4g==
studyTime:
0ZdZgweOU9CM7MhzBvGExw==
lessonLocation:
z6QsH/c/vXJA19zpRqak/w==
1
GeruzoniAnsasu 2022-11-23 02:17:33 +08:00 2
长度这么规整,原数据精确 128 位
推测是 MD5 |
2
JohnBull 2022-11-23 02:20:41 +08:00
猜测应该是编码之前对称加密过了
|
3
JohnBull 2022-11-23 02:22:34 +08:00 1
@GeruzoniAnsasu 从 studyTime 和 lessonLocation 的字面上看,应该是明确的时间地点信息,应该是要取出来用的,应该不是 md5 ,而是某种加密算法
|
4
dingwen07 2022-11-23 02:51:02 +08:00 via iPhone 1
echo "nxcUhOHtnq8U5OiQFRyVIQ==" | base64 -d | xxd
00000000: 9f17 1484 e1ed 9eaf 14e4 e890 151c 9521 ...............! 完全看不出来这是什么 |
5
msg7086 2022-11-23 04:29:00 +08:00 via Android 6
为什么 base64 解码后不能是乱码呢。
|
7
LykorisR 2022-11-23 07:14:22 +08:00 1
可能是换表 base64 吧,你找找有没有新表
|
8
chendy 2022-11-23 08:07:38 +08:00 2
base64 解码是 string -> byte[]
byte[] 不一定是字符串编码得到的,所以得不到字符串很正常 |
9
icegaze 2022-11-23 08:20:54 +08:00 via Android 2
我小时候经常用 base64 把一些 exe 文件编码后作为邮件主体发送给对方…
因为那时候对 BIN 的编码还在用 QP , 用 base64 效率更好些。 所以, 用 base64 编码的不一定是文本文字哦… |
10
geekvcn 2022-11-23 08:56:15 +08:00 1
这是打算逃课吗?
|
11
julyclyde 2022-11-23 08:58:54 +08:00 1
如果原文是 human reabable 谁还去 base 啊……
|
13
lanwairen123 2022-11-23 09:58:31 +08:00 1
用其他对称加密算法如 aes des rsa 等加密后用 base64 编码的
|
14
Promtheus 2022-11-23 10:02:42 +08:00 1
base64 只是为了序列化,用来传输。他的源头不一定是文本的
|
15
timedivision OP @geekvcn 问的没错,就是准备逃课,哈哈哈
|
16
q8515620 2022-11-23 12:34:11 +08:00 via Android
逃课的话,解不出来不是更好吗?/doge
|
17
someone120 2022-11-23 12:35:20 +08:00 via Android
目测为 aes 加密,base64 应该不会出现 /和+的
|
18
ElmerZhang 2022-11-23 12:44:59 +08:00
看起来是 hash 过又 base64 的
|
19
yolee599 2022-11-23 13:03:04 +08:00 via Android
base64 的功能不是只编码 ASCII ,而是编码 HEX 。
|
20
locoz 2022-11-23 13:17:31 +08:00
盲猜 AES 套 Base64 方便传输,不是 AES 的话大概率 DES 。
|
21
liuguang 2022-11-23 13:35:57 +08:00
你见过 ssl 证书吗?也是 base64 编码的。base64 只是把二进制数据编码为可读的字符串,并没有说这些二进制数据一定是字符串。
|
22
shawndev 2022-11-23 13:41:26 +08:00
base64 decode, 输入是 string ,输出是 bytes ,从来没有说过输出一定是一个有效的字符串啊。
如果你关心的是为什么不是所有 bytes 都能解码为字符串( ASCII, UTF-8 )那就是另一个问题了。 |
23
jiangzm 2022-11-23 13:45:43 +08:00
@ElmerZhang 用 hash 数据传字段值吗, 这么牛
|
24
icegaze 2022-11-23 13:46:07 +08:00 via Android
@julyclyde 1995 年 1996 年吧,基本上邮件很少有直接发到对方服务器的,多多少少会经过中间邮件服务器中转,只要有一个服务器是 7bit 的,就会发生错误,,,所以非 ASCII 的文件,习惯于自己先编码一下,放在邮件 body 里,这样安全些。
|
25
itskingname 2022-11-23 13:49:56 +08:00
任何二进制信息都能编码成 Base64.图片也可以。所以并非所有 Base64 解码后都能得到字符串。
|
26
thinkershare 2022-11-23 14:05:34 +08:00 1
base 64: encode: bytes ==> string decode: string==> bytes
byte 里面是什么,只有天知道, 或者瞎猜, 使用各种 encoding 尝试解码, 只是因为大部分字符串编码都兼容 ASCII, 所以解码出来的 bytes[]恰好可以直接和 Unicode 16 的字符串匹配,纯粹就是一个巧合。JavaScript 原来没有原生的 UInt8Array , 使用了 string 来表示了 byte[],所以 btoa 就是不支持中文(因为中文的 Unicode 并没有办法直接对应到 byte[]), 你找个强类型语言,你会发下输入都是 byte[], 解码后也是 byte[], 至于 byte[]里面的内容,只有创建人清楚。 |
27
ElmerZhang 2022-11-23 14:26:16 +08:00
@jiangzm 因为所有值的长度都一样是 32 位,而且随机性比较强,所以猜测是 hash 过的。当然也有可能是自创了什么加密算法,那就很厉害了。
|
28
ElmerZhang 2022-11-23 14:29:20 +08:00
@jiangzm 另外,如果是选课系统的话,lessonLocation 和 studyTime 的值实际都是有限的,可枚举的,所以提前 hash 一下再传输也是有可能的,不过这样的话前端肯定会还会有一次「字典请求」来把 hash 和展示的值对应起来。
|
31
jiangzm 2022-11-23 16:14:13 +08:00
|
32
whoami9894 2022-11-23 16:28:01 +08:00
@ElmerZhang 百度一下分组加密的 padding
|
33
icegaze 2022-11-24 22:56:09 +08:00 via Android
@julyclyde ^_^ 现在是的呀,都直接和对端 smtp 服务器连接的,,,我小时候那大多是经过好几个服务器中转的…>_<
|