跳到主要内容

如何设定一个自己不知道的密码

· 阅读需 3 分钟

最近我想停止熬夜,但是又羞于向父母要求在晚上收我的手机,找朋友设置密码呢他没过多久又把密码发给我了。那要如何自己设置一个自己不知道的密码呢?

当我低下头看到了键盘上的数字并沉思了一秒后:在键盘上跳舞!

在键盘上跳舞​

键盘的数字列:` 1 2 3 4 5 6 7 8 9 0 - = 一共有13个键,我可以以1键为起点,在不看键盘的情况下左右移动数次后按下,重复多次后就可以输入一个完整的密码,而且由于是在键盘上左右移,没有看密码实际是多少,本人很难记住密码原值是多少,也就成功设置自己了自己不知道的密码。

首先,我们需要使用 AI 或者代码生成一个随机的“跳舞动作”。

用比较数学的语言表述:

给定非零自然数 d,s,lp,rpd,s,l_p,r_p,记活动区间 A={x∈Z ∣ 0−lp≦x≦9+rp}A = \{x ∈ Z\ |\ 0-l_p ≦ x ≦ 9+r_p\} ,从0开始,记当前数值为xx,且始终有 x∈Ax ∈ A,一次可以向左走 nn 步(n∈N∗n ∈ N^*),记为 LnLn,同理向右为 RnRn,在 x∈[0,9]x ∈ [0,9] 时可以使用选定操作,计为 PP ,开始(记为OO)到 PP 或两次 PP 之间有 ss 次 LL 或 RR 操作,总计执行 dd 次 PP 后结束(OO)。

参数解释:dd 为密码位数;ss 为每次按密码前的左右操作次数;lpl_p 为 0 键左侧键数;lpl_p 为 9 键右侧键数。

例:b=2,s=3,lp=1,rp=2b=2, s=3, l_p=1, r_p=2,8、4可记为

OL1R9L1PL3L2R1POOL1R9L1PL3L2R1PO

这是我拿AI生成的一个密文生成器(原始是一个py):

分享你的密钥​

生成你的序列设置完密码后你就可以分享给你的朋友了。
但是,如果还需要更进一步的控制,就需要增加自己破密的难度,此时我们可以使用 Shamir's Secret Sharing 密钥分享了。

Shamir's Secret Sharing​

使用这个算法可以将密钥(这里是密码序列)拆分成n份,分发给多个人后,只有凑齐其中的t份,这个密钥才可以被还原。不仅可以分发密钥,还在一定程度上有了冗余性。

可以使用命令行ssss命令(需安装),使用方法:

ssss-combine -t "t"
ssss-split -t "t" -n "n"