首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加密安全性

加密安全性
EN

Stack Overflow用户
提问于 2013-10-02 01:20:32
回答 2查看 58关注 0票数 0

假设我们有一个数字(12345),我们想要将它存储在数据库中,但以某种方式加密。

我们希望避免使用任何常见的加密方法。

我们想知道这样做是否安全,如果安全,有多安全。

原始号码: 12345

洗牌: 35124

添加一些数据: 53412-35124-14352

然后你把它放在数据库上..。

因为你知道去哪里找,所以你可以读原来的号码。这种方法容易逆向工程吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-02 01:51:33

假设我有办法给你寄一些号码来储存。我给你发了几个号码,然后检查你的“加密”号码。

代码语言:javascript
运行
复制
Number I Sent       Number You Stored
12345               53412-35124-14352
11111               73671-11111-78162
67890               98126-80679-98983

只要看一看,你就能很容易地看到正在发生的事情。

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

任何人,从最无知的业余爱好者到最好的密码学家,都能创造出一种他自己无法破解的算法。这一点都不难。困难的是,即使经过多年的分析,也没有其他人能够打破的算法。要证明这一点,唯一的方法就是对算法进行多年的分析,由世界上最好的密码学家进行分析。

票数 0
EN

Stack Overflow用户

发布于 2014-09-03 11:25:58

该方法非常,易于逆向工程和断裂。

这样简单的东西很可能会随着人类的观察而被打破,并注意到一种不断的位置映射。我给你abcd,你还给我bdca-bafd-jc6f。添加的额外数据并不会模糊前4个字符的链接。

然而,如果有一种更复杂的方法,计算机就可以应用类似于机器学习的方法来检测这些直接模式。谷歌翻译使用这一版本,通过纯数学和已被翻译成多种语言的书籍生成翻译。

此外,如果您只是对数字进行洗牌,则加密某些内容的示例空间将非常小。

例如:如果加密的文本是: 1342

更好的加密将意味着它本来可以是0- 9999 (总数10,000)。

您的加密告诉我,它是从以下24个字符中的一个开始的:

代码语言:javascript
运行
复制
1234 | 2134 | 3124 | 4123

1243 | 2143 | 3142 | 4132

1324 | 2341 | 3214 | 4213

1342 | 2341 | 3241 | 4231

1423 | 2413 | 3412 | 4312

1432 | 2431 | 3421 | 4321

终于:

因为你的加密的“秘密”来源于不知道如何执行加密的人,所以你不能要求社区检查它的力量,而他们却不知道你是如何做到的,从而破解了它。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19128553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档