0

Let's say we have a number (12345) and we want to store it in the database but encrypted somehow.

We would like to avoid using any common encryption method.

We would like to know if doing this is secure, and if it is, HOW secure.

Original number: 12345

Shuffle: 35124

Add some data: 53412-35124-14352

then you store it on the db...

You can read the original number since you know where to look. Is this method easlily reverse engineered?

4

2 回答 2

0

假设我有一些方法可以向您发送一些数字以进行存储。我给你发了几个号码,然后我检查你的“加密”号码。

Number I Sent       Number You Stored
12345               53412-35124-14352
11111               73671-11111-78162
67890               98126-80679-98983

只需看一下,您就可以很容易地看到发生了什么。

你真的不应该发明自己的加密算法。我只引用布鲁斯·谢尔的话

任何人,从最无知的业余爱好者到最好的密码学家,都可以创建一个他自己无法破解的算法。这甚至不难。困难的是创建一种其他人都无法破解的算法,即使经过多年的分析。证明这一点的唯一方法是让算法接受周围最好的密码学家多年的分析。

于 2013-10-02T01:51:33.127 回答
0

该方法很容易被逆向工程和破坏。

人类看着它并注意到位置的恒定映射可能会破坏这种简单的东西。我给你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

最后:

因为你的加密的“保密性”来自不知道如何执行它的人,所以你不能要求社区在他们不知道你是如何做到的并因此破解它的情况下检查它的强度。

所有好的加密方法“保密”都来自密钥或密码,这意味着您可以共享该方法并要求社区测试其强度,因为您没有给他们密钥。

于 2014-09-03T11:25:58.260 回答