当前位置:  开发笔记 > 编程语言 > 正文

沿着一条线找到随机点

如何解决《沿着一条线找到随机点》经验,为你挑选了2个好方法。

我正在写一个小程序来帮助分割密码(见下面的解释)

我有代码将文本转换为int(text-ascii binary - > dec int)

所以在这种情况下,"test"一词将= 1952805748

现在有趣的部分.(编码密码)

然后我会取x1 = 1952805748和y1 = 0

然后我组成一个随机点,其中x2 = 7,y2 = 142

这将在x1,y1和x2,y2之间画一条线(使用Y = mx + B)

我需要如何找到这两点创建的任意随机点(好称为x3,y3)

如果有人有任何想法,我很乐意听到他们.我试图计算出两个点都是整数的代码(如果我们每个数字后面没有巨大的小数点,那么每个人都会更容易)

++为什么++

一般的想法是,如果你不得不在两方之间分开密码,一方可能会根据字符串给出密码

如果你使用这种方法,他们会得到一个单独的点,从那个单点,在数学上不可能确定线符合x(x =?y = 0)的位置,这样你就可以安全地将一组点交给你的律师一个给你的妻子

他们会做数学计算(将其输入程序),然后他们会得到一个可以解码的数字来说明一个密码可以用你的遗嘱或其他一些你不希望他们访问的敏感文件来破坏文件preseent



1> Jon Skeet..:

其他答案已经解决了你的数学思想,但在加密方面,我强烈建议你不要试图找出自己的加密方案.

如果你想用两个密码加密某些东西,这两个密码都是必要的,那么有一个更简单的方法:加密文件两次:

Plaintext -> Encrypted1 (with password 1)
Encrypted1 -> Encrypted2 (with password 2)

Encrypted2是你存储的.扔掉Encrypted1.

要解密,只需Encrypted2用密码2 解密即可获取Encrypted1,然后解密Encrypted1以返回明文.

任何一个密码本身都没用,就像预期一样,你不需要计算出任何加密算法/代码.

编辑:作为一个更简单的解决方案,只需填写一个非常长的密码,并给每一方的一半.例如,使用密钥"这是一个非常长的密码"加密文件,并给你广泛的"这是一个非常"和你的律师"长密码".显然你需要适当地选择密码,以便知道一半不会给出关于另一半的任何提示.



2> Mike Boers..:

这个算法实际上被称为" Shamir的秘密共享 ",是一种分裂秘密的好方法.你可以分割任意大的秘密,这些秘密需要你想要聚集在一起的任何人来恢复秘密.

我建议你稍微概括一下并找到一个解决方案,让你指定N点需要求解N-1次多项式.您可以使用拉格朗日多项式来为您解决此问题.

然而,维基百科上的伪代码仅适用于浮点数,并且需要稍微修改才能与整数一起使用.如果你想要一些想法(并假设它有用),请查看我的完整python实现.

它给了我这个输出:

1 -- 50383220533284199945706810754936311181214547134666382315016772033813961148457676
2 -- 125723425896904546349739165166331731432281836699962161072279259011758052396215820
3 -- 235794378436564714387676526976517945151880763730707233042654663244625708155520494
'This is my super secret password.'

编辑:一年后,我已将实施更新为在有限字段内工作,这是可证明其安全性所必需的.万岁!

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有