许多人使用密码管理器来私下存储他们使用的各种密码。密码管理器的关键部分之一是主密码,它保护所有其他密码。在这种情况下,主密码本身就是风险。任何知道您的主密码的人都可以不受阻碍地进入,就好像它受到您的密码保护一样。自然地,为了保证您的主密码安全,您会选择难以想象的密码,将其牢记在心,然后做您应该做的所有其他事情。但是万一主密码泄露或者忘记了,会有什么后果呢?也许您在没有现代技术覆盖的情况下到一个最喜欢的岛屿旅行了一个月,突然间您不记得在水中嬉戏后享受美味菠萝的那一刻。你的密码是什么。是不是“山顶一庙一壶酒”?还是“一程二三里,延村四五家”?反正我当初选密码的时候,觉得一切都高明了,现在后悔自己为什么要作茧自缚了。当然,您不会与任何其他人共享您的主密码,因为这是密码管理的首要原则。是否有任何其他解决方法来避免这种难以忍受的密码负担?试试Shamir的SecretSharing,这是一个可以存储在块中的秘密,并且只能通过组合片段算法来恢复,以保持内容的秘密。让我们先通过一个古代和一个现代的故事,看看沙米尔的秘密分享算法是怎么回事。这些故事的隐含前提是您对密码学有最低限度的了解,如有必要,您可以复习密码学和公钥基础设施简介。一个关于加密解密的古老故事在一个古老的国家,国王有一个天大的秘密,一个很大很大的秘密:defint_from_bytes(s):acc=0forbins:accacc=acc*256acc+=breturnaccsecret=int_from_bytes("terriblesecret".encode(“utf-8”))太老了,不能轻易相信自己的孩子。他有五个孩子,但他知道前路充满危险。一百年后,他的孩子们需要用这个秘密来保卫国家,而国王不能容忍他的孩子们知道这些秘密,只要他们还记得自己,尤其是这种状态可能会持续几十年。因此,国王用大法术将秘密分为五部分。他知道,可能会有一两个孩子不服从他的意志,但绝对不会同时出现三个或更多:秘密也是小菜一碟。第一步是选择一个大素数——第13个梅森素数(2**521-1),他让人把这个数铸在一个巨型鼎上,放在大厅上:P=2**521-1但这不是要保守的秘密:它只是公开数据。国王知道,如果P是素数,用P取数的模,就形成了一个数学领域:加减乘除运算可以在领域内自由进行。当然做除法的时候,除数不能为0。为了方便,大王在做模运算的时候使用了PyPI中的mod模块。该模块实现了各种模计算算法。他确认他的秘密比P短:secret
