友情联动:发支付宝口令红包,欢迎大家破解.

2021-05-14 11:36:46 +08:00
 3dwelcome

昨天有个帖子: https://ex.noerr.eu.org/t/776529 前端加密让大家破解 AES 加密红包,这太离谱了。

我把 AES 算法去掉,现阶段的计算机要破译几乎不可能。改成了最简单的 XOR 加密,也放入了口令红包,欢迎大家破解。

规则如下:

  1. 支付宝口令红包是纯数字的 0~9, 长度固定为 8

  2. password 明文密码被限定为 0~9, a~z, A~Z 这个范围内,无特殊字符,无中文和符号。

  3. 为了便于校验结果是否有效,支付宝口令累加起来的数字,是 45 。(比如口令是 12345678, 累加值就是 1+2+3+4+5+6+7+8=36)

  4. 核心解密函数就一行,password 是不知道的,是前端 input 用户输入。

var str = "WmXOsVFG";
var pass = "????????";
var num = "";

for (var i=0;i<pass.length;i++)
num += String.fromCharCode(pass.charCodeAt(i) ^ str.charCodeAt(i));

7355 次点击
所在节点    程序员
57 条回复
hive
2021-05-14 23:20:45 +08:00
@x86
哈哈可以再对照一下,真是「神帖」;
彩虹表事件汇总:

0xTao 送电脑: http://ex.noerr.eu.org/t/29091
v2fack “打假”被“打脸”: http://ex.noerr.eu.org/t/29113
F1r3Sn0w 打假: http://ex.noerr.eu.org/t/29184

allhack 声明上: http://ex.noerr.eu.org/t/29208
allhack 声明下: http://ex.noerr.eu.org/t/29251

时间流逝的很快,一句话概括就是,知道一个 hash 值,我能逆向出来一本红楼梦

事件延续:
SunMonnnnkey 挑战赛: https://ex.noerr.eu.org/t/29270
shad0w 破案: https://ex.noerr.eu.org/t/29304
F1r3Sn0w 爆出这是“四”簧戏: https://web.archive.org/web/20120415224955/https://ex.noerr.eu.org/t/29316

知情人士 YiQun2Huo 再爆料:
https://ex.noerr.eu.org/t/29333
https://ex.noerr.eu.org/t/29338
no1xsyzy
2021-05-14 23:32:21 +08:00
@3dwelcome #36 你还是看一下对称加密的基础吧,你说到这个「生成无序数列」其实就是简化版的 DES

第二个问题是,你的无限长密钥,有多少随机性?
这里要重新再说明一下「随机程度」的概念:一个数列,有多随机,就是说有多难以预测。这依赖于添加足够的熵
无论何种内部状态有限的伪随机数算法(换句话说,任何有限状态机),如果不从外部添加熵,经过足够长的耗尽后都必收敛于一个循环。
至于无限不循环的生成,则依赖于无限大的内部状态也就是无限大的内存。

另一方面,你难道希望这个「代码片段」是随机生成并分发的?
定理:是否停机不可能被判定。
引理:不可能自动确认任何随机生成的代码好坏。
(指不定随机出了实质等价于 (internal)=>(internal%2==0?internal/2:internal*3+1, f(internal)) 的代码呢?你要能确定好坏就意味着证明或证伪了考拉兹猜想。)
3dwelcome
2021-05-15 00:03:54 +08:00
@no1xsyzy

"你的无限长密钥,有多少随机性?"
你也提到了伪随机数算法的生成品质,决定了最终有多少随机性。

这里并不需要真正意义上的“无限”,覆盖明文长度就可以。我去查了一下,目前比较新的伪随机数算法 xoshiro256/512/1024,在生成 1 PetaByte 长度中,都没有遇到过重复现象。(show no sign of bias after a petabyte of output, https://xoshiro.di.unimi.it/hwd.php)

而且可能你不信,我确实有一些特殊算法,可以做到序列完全不重复,以一定小空间的代价,来换取一定大范围的不重复。
windyskr
2021-05-15 00:09:50 +08:00
@lbyo 精彩啊!
kingxiangqi
2021-05-15 00:21:33 +08:00
@AoEiuV020 #21

感觉还能继续简化啊,连加减法都不需要。

已知口令 8 位整数,数字累加和为 45,求口令。
3dwelcome
2021-05-15 00:25:48 +08:00
@no1xsyzy "也有 bcrypt 这种纯粹为了慢设计的算法"

这种就是套着加密名称的 hash 算法,强烈鄙视。挂羊头卖狗肉啊。
no1xsyzy
2021-05-15 00:42:42 +08:00
@3dwelcome (非 CS ) PRNG 突出一个 garbage in garbage out 。种子的空间是有限的,算法的数量是更有限的。
如果我拿到了比你种子(序列 S )还多的比特的输出(序列 X ),我能不能通过这个 X 构建出你的 S ?做一个 X->S 的反查表或者相应的彩虹表就行了。
你可以看下 DES 算法(先不细究 F 函数),它找到了一个现成的源源不断的熵池,来生成这个供 XOR 的序列。

CSPRNG 不是单单「完全不重复」就能说明的,而是强调不可逆猜和旁猜(包含几种难以一句两句描述清楚的旁猜)。我可以立马搞一个从不重复的算法(真正地永远不重复,这个我在 codegolf 上发过一个蠢问题),但你看到输出就能立刻猜到算法。以下是其产生序列的前 32 个字符:
0-1-2-3-4-5-6-7-8-9-10-11-12-13-
( SICP 1.1 都比这难了)
至于如果你把数据的保密性寄希望于算法的保密性,我只能说祝你好运了,因为你唯一的保证就是好运。
no1xsyzy
2021-05-15 00:51:42 +08:00
@3dwelcome cryptography 这是「密码学」大类,哈希甚至签名都是密码学研究的课题。真正意义上的对应的「加密」「解密」英文是 to cipher 和 to decipher 。真要说挂羊头卖狗肉,是 encrypt 和 decrypt 这两个造词 —— 既不分析(单 crypt 是「地下室」的意思),也不屈折( en- de- 这两个不是对应的词头,en- 和 dis- 才是)。
而且不要跑题,用慢来避免爆破,是在描述一种「有效的折衷」,跟非 22 端口 ssh 一个意思。
learningman
2021-05-15 01:02:12 +08:00
@BeautifulSoap #31 V2EX 一直都有广告,你是不是检查一下你的 adblock 。。。
sillydaddy
2021-05-15 10:41:03 +08:00
@GeruzoniAnsasu
我贴链接就是为了给自己写的东西引流。。哈哈
论文查重有点不太一样:抄袭论文的人总是会故意特意打乱原有的论文。但在网上留言的人,应该很少特意去掩饰自己的语言习惯。
persistz
2021-05-15 13:35:47 +08:00
@3dwelcome 拿公钥和对称相比不合适啊,两者存在的目的就完全不一样。
3dwelcome
2021-05-15 13:42:17 +08:00
@persistz "拿公钥和对称相比不合适啊,两者存在的目的就完全不一样。"

网上有个叫 RSA Cryptography Specifications 的标准文档( rfc3447 ),里面对 RSA 用途做了详细规范,第一是签名认证,第二是纯加密解密。

第二种用法知道的人少,大部分都是第一种 HTTPS 里 RSA 签名验证的用途。

但其实 RSA 是完全可以用于加密数据本体的,就是运行速度会慢一点点。
miloooz
2021-05-15 14:29:01 +08:00
@matrix67 真的精彩,堪比悬疑大片
shansing
2021-05-15 15:37:23 +08:00
@persistz 拿非对称和对称加密相比倒没什么, @3dwelcome #10 最遗憾的点在于话说得太死。如 @no1xsyzy #39 所说,“random padding 对称也能做”。验证这一点甚至不需要去翻标准文档,找一个齐全的在线工具( http://tool.chacuo.net/cryptaes ),padding 方式多选几次选到 iso10126 就看到效果了。
3dwelcome
2021-05-15 16:01:35 +08:00
@shansing random padding 几乎就是 RSA 发明的,在算法上,是必备环节。

而对称算法的 random padding,就是一个可选环节。

你不能说后来者抄个作业,就变得和原创作者一样强。
matrix67
2021-05-15 16:51:16 +08:00
@lbyo #41 老哥你牛逼!!以后又可以浪费无数人的 1 个小时了(应该不止)
yeqiaowei321
2021-05-15 16:55:34 +08:00
请支持国产的 SM2 算法

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

https://ex.noerr.eu.org/t/776889

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

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

© 2021 V2EX