@
bwangel 老实说这个链接我还真没 Google,也没扔书签里,而是从
https://github.com/FrankHB/pl-docs/blob/master/zh-CN/typing-vs-typechecking.md#类型--分类这个最近老是出现在浏览器地址栏的半成品坑里里挖出来的(但是为了避免王婆嫌疑还是放其它参考了)。另外,LtU 的那个链接实际上指向的评论是
http://lambda-the-ultimate.org/node/4554#comment-71474对 PL 不太了解的非预期读者可能不太好找所以这里补正。
不过我承认,Rob Pike 和 Ken Thompson 以外的几位的名字我拼写起来确实不大熟练……(
对正题的观点和你的意见基本一致。
补充 @
binux 钻牛角尖观点的对应:
0.从历史的角度来看,我基本同意上面 @
azuis 的分析,不过既然是历史角度,也得考虑 Base64 是干什么用的了—— Base64 本来也不是为了作为 cipher 而被发明的。为了说明密码学理论研究方法的普适性,把 Base64 这样的编码当作 trivial 情形下考虑是能说得通的,但在分析个案时没有意义。
1.基于 Base64 的原始用途,就公认的 Base64 自身来讲,几乎所有有效的用例都没被作为 encyrption,在这个案例中看来也不是。要能起到 encryption 的预期作用,需要 Base64 以外的假设,所以把 Base64 排除出 encryption 是合理的,强行推广到平凡情形才不自然。
2.Base64 也不是当代 cryptosystem 意义下的 encryption。即便用类似经典密码的方式提供 key generation,密钥空间也成问题。提供 2 variants,顺带给了 1-bit key 咯?攻击成本是 O(1)诶,就算能作为密码学研究的对象,能提供多少 encryption 的预期性质?稍微不那么 trivial 是你自己发明其它 variant ——但这样不和通行版本兼容的编码,还好意思叫 Base64 ?
3.@disk 能把 Base64 叫成“加密”的,八成是根本不清楚 Base64 是啥玩意儿,根本不会有上面的分析的认知。能直接把 Base64 当加密算法扔在“加密系统”里的真·勇士,也就是笑话了。但是,因为外行叫法的偏差而使用户到开发者普遍对冒牌的“加密”有什么奇怪的预期,这就不那么好笑了。说到底,本贴 LZ 会遇到这个问题,主要原因就是这样。特别地,我不觉得把“加密”换成“编码”的说法会费什么事,所以我不理解有什么意义继续放任以讹传讹。