
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 长度这么规整,原数据精确 128 位 推测是 MD5 |
2 JohnBull 2022-11-23 02:20:41 +08:00 猜测应该是编码之前对称加密过了 |
3 JohnBull 2022-11-23 02:22:34 +08:00 @GeruzoniAnsasu 从 studyTime 和 lessonLocation 的字面上看,应该是明确的时间地点信息,应该是要取出来用的,应该不是 md5 ,而是某种加密算法 |
4 dingwen07 2022-11-23 02:51:02 +08:00 via iPhone 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 为什么 base64 解码后不能是乱码呢。 |
7 LykorisR 2022-11-23 07:14:22 +08:00 可能是换表 base64 吧,你找找有没有新表 |
8 chendy 2022-11-23 08:07:38 +08:00 base64 解码是 string -> byte[] byte[] 不一定是字符串编码得到的,所以得不到字符串很正常 |
9 icegaze 2022-11-23 08:20:54 +08:00 via Android 我小时候经常用 base64 把一些 exe 文件编码后作为邮件主体发送给对方… 因为那时候对 BIN 的编码还在用 QP , 用 base64 效率更好些。 所以, 用 base64 编码的不一定是文本文字哦… |
10 geekvcn 2022-11-23 08:56:15 +08:00 这是打算逃课吗? |
11 julyclyde 2022-11-23 08:58:54 +08:00 如果原文是 human reabable 谁还去 base 啊…… |
13 lanwairen123 2022-11-23 09:58:31 +08:00 用其他对称加密算法如 aes des rsa 等加密后用 base64 编码的 |
14 Promtheus 2022-11-23 10:02:42 +08:00 base64 只是为了序列化,用来传输。他的源头不一定是文本的 |
15 8888888888 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 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 服务器连接的,,,我小时候那大多是经过好几个服务器中转的…>_< |