看来还是有公司喜欢把重要数据用 Base64 “加密”啊...

2018-12-02 01:06:59 +08:00
 yuzo555

19682 次点击
所在节点    程序员
125 条回复
Shura
2018-12-02 18:31:18 +08:00
@bwangel 严格来说,如果 base64 的编码算法保密(或者说对你来说是保密的)就是古典加密算法。
0o0o0
2018-12-02 18:41:00 +08:00
真的不是段子吗,hmmm
binux
2018-12-02 18:47:42 +08:00
@disk 严格来说 base64 还真满足了“加密不依赖于算法的保密性”,首先你可以改变 base 的映射符号表,这个映射表就是密钥。
即使你争辩说这样就不是 base64 了,那么在 base64 中,有 base64url 和 Program identifier Base64 variant 1 这么两个变种,他们 62 和 63 的映射是相反的,那么这两个变种的选择就是密钥了。你不能说用小质数的 rsa 就不是加密了吧。
Telegram
2018-12-02 18:51:26 +08:00
@WeaPoon #8 肯定是不懂技术的啊,以为 LZ 写了他们公司专用的破解工具。
fhefh
2018-12-02 18:54:26 +08:00
我也去写一个 base64 解码的工具 放在我的网站上~

把妹子介绍我 😁
FrankHB
2018-12-02 19:02:28 +08:00
@disk 关键并不是 Kerckhoffs 原则; encryption 的确可以独立于 cryptosystem 存在。
@shuax @shijingshijing @binux 因为这假定不同授权方解码的开销不一样。Base64 ……是个人都一样人肉解不出来,根本没法指望只对特定授权方有效。只有把人的解码能力考虑进去才有的系统才算的加密手段,放在别的没法控制访问者的环境里自然就不算。
中文维基的问题跟英文一对照就很明显了。本来也没所谓成功的 encryption,充其量就是成功 confusion 而已…… cipher 一开始就已经被公开了还能怎么失败?要把选择算法的方式作为 cipher 的一部分来保密,那加密算法就不只是 Base64 了(显然这里不是)。
bwangel
2018-12-02 19:19:44 +08:00
看到楼上为了 base64 是不是加密算法争论不休,我还是贴出两个地址吧。

https://golang.org/pkg/encoding/base64/
https://golang.org/pkg/crypto/rsa/

这是 golang 包的定义,base64 库放在 encoding 包里面而不是 crypto 包里面,这个表达的够清晰了吧。

要是还要质疑说 三巨头( Robert Griesemer, Rob Pike, Ken Thompson )的理解是错的,那我只能默默地 block 掉,并在心里默默地骂一句:**
realpg
2018-12-02 19:27:13 +08:00
@shuax #46
明文和密文不存在一一对应关系
mydns
2018-12-02 20:10:08 +08:00
让人下架这人心该有多大啊
ltux
2018-12-02 20:18:15 +08:00
“最好用的 Base64 在线工具”,违反广告法。
FrankHB
2018-12-02 20:35:18 +08:00
@bwangel 就这个问题我对 golang 包的做法没意见,也不质疑其中的理解,不过客观点,还是得指出你的逻辑有些比较智硬之处。
你所谓的三巨头并不是 Ron Rivest、Adi Shamir 和 Leonard Adleman,在这个问题上的观点有什么显著性,一定比一般码农内行(好吧,即便就是 RSA 这三位在这个问题上也没多大作用,因为基本上不管哪个来源查证到的共识都是他们之前就有定论的)?顺带,不多落井下石(其他两位只是偶有需要擦屁股),Rob Pike 在不懂行的地方扯蛋可是被抓过现行的: http://lambda-the-ultimate.org/node/4554
wzhndd2
2018-12-02 20:46:46 +08:00
你就是那个做视频解析的张一环?
jasonyang9
2018-12-02 20:55:28 +08:00
这个推广 99 分
bwangel
2018-12-02 22:12:49 +08:00
@FrankHB 哈哈,我就喜欢你这种带链接的回复,起码说明回复前查了 Google,不是噼里啪啦一顿乱杠。

我承认上一个回复确实不太有逻辑,因为看到之前 binux 言论有些生气,密码学艰深复杂,普通程序员能正确使用都有些困难( 参见 https://mp.weixin.qq.com/s/9Q40o8R2DchASoEhyfAHxw ) ,他却来这里乱杠,把当做编解码使用的 base64 硬要说成加密算法。这不是误导人么。

我之前看到有 Go 相关文章把他们三个说成三巨头,所以这里直接就写三巨头了,不太严谨。我确实对大牛有些盲目崇拜,隔行如隔山,大牛不一定在每个领域都精通。

所以,老哥,回到正题。

我认为在现在 2018 年,在现代密码学的体系中,base64 不是加密算法。

我这个结论在这种附加条件下应该是正确的吧,程序员在做加解密相关的工作的时候吧,无论如何都不该使用 base64 当做加密算法。

当然我对密码学的认识也很浅显,欢迎指教。
Vegetable
2018-12-02 22:56:13 +08:00
如果 base64 算加密算法,那 utf8 算吗?
fumichael
2018-12-02 22:59:22 +08:00
你就说,感谢你使用了我的加密算法呀,但是你好像还没买授权喔。
opengps
2018-12-02 23:01:13 +08:00
我学长大越没法理解,这类人怎么做到理直气壮的
geying
2018-12-03 00:25:19 +08:00
笑死了,不过我们之前客户说别直接把明文存数据库就行了,那行吧……
wmhx
2018-12-03 01:39:50 +08:00
卖给他好了,
azuis
2018-12-03 01:52:07 +08:00
@bwangel 我觉得问题是这样的。base64 其实和 Caesar cipher 原理一样,都是一种 Substitution cipher。比如你自己定义一种对应关系也可以称作一种加密方式。至少二战结束前这些变体方式都是在广泛使用。 我认为这也算 “加密” 的一种。 但是如果说现在应不应该使用, 和曾经的明星加密算法 DES 一样,已经落后于时代,不应该使用。 但是在历史上来说这也属于加密历史中的一部分。

至于包名来说。 毕竟它本身就是为了编码而开发的。 虽然广义上可以归类为替换式密码的一种,但是还是让它做它该做的工作吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/513457

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX