假设我们有一个数字(12345),我们想要将它存储在数据库中,但以某种方式加密。
我们希望避免使用任何常见的加密方法。
我们想知道这样做是否安全,如果安全,有多安全。
原始号码: 12345
洗牌: 35124
添加一些数据: 53412-35124-14352
然后你把它放在数据库上..。
因为你知道去哪里找,所以你可以读原来的号码。这种方法容易逆向工程吗?
发布于 2013-10-02 01:51:33
假设我有办法给你寄一些号码来储存。我给你发了几个号码,然后检查你的“加密”号码。
Number I Sent Number You Stored
12345 53412-35124-14352
11111 73671-11111-78162
67890 98126-80679-98983只要看一看,你就能很容易地看到正在发生的事情。
你真的不应该发明自己的密码算法。我只引用布鲁斯·谢尔的话
任何人,从最无知的业余爱好者到最好的密码学家,都能创造出一种他自己无法破解的算法。这一点都不难。困难的是,即使经过多年的分析,也没有其他人能够打破的算法。要证明这一点,唯一的方法就是对算法进行多年的分析,由世界上最好的密码学家进行分析。
发布于 2014-09-03 11:25:58
该方法非常,易于逆向工程和断裂。
这样简单的东西很可能会随着人类的观察而被打破,并注意到一种不断的位置映射。我给你abcd,你还给我bdca-bafd-jc6f。添加的额外数据并不会模糊前4个字符的链接。
然而,如果有一种更复杂的方法,计算机就可以应用类似于机器学习的方法来检测这些直接模式。谷歌翻译使用这一版本,通过纯数学和已被翻译成多种语言的书籍生成翻译。
此外,如果您只是对数字进行洗牌,则加密某些内容的示例空间将非常小。
例如:如果加密的文本是: 1342
更好的加密将意味着它本来可以是0- 9999 (总数10,000)。
您的加密告诉我,它是从以下24个字符中的一个开始的:
1234 | 2134 | 3124 | 4123
1243 | 2143 | 3142 | 4132
1324 | 2341 | 3214 | 4213
1342 | 2341 | 3241 | 4231
1423 | 2413 | 3412 | 4312
1432 | 2431 | 3421 | 4321终于:
因为你的加密的“秘密”来源于不知道如何执行加密的人,所以你不能要求社区检查它的力量,而他们却不知道你是如何做到的,从而破解了它。
所有好的加密方法“保密”都来自密钥或密码,这意味着您可以共享该方法,并要求社区测试它的力量,因为您没有给他们密钥。
https://stackoverflow.com/questions/19128553
复制相似问题