这个简单的加密算法是否足够强大?

时间:2013-07-03 07:42:48

标签: python sockets cryptography

两台计算机通过互联网使用套接字进行通信 我只是将服务器程序发送给另一个人,然后我的客户端程序将发送和接收字符串 我需要在传输过程中对数据进行加密 我的想法是简单地使用一个不需要任何密钥的幼稚算法,而是一对包含所有字母数字字符的序列。

ROW1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'

第二行将包含相同的字符,但会混淆。原始内容将在传输之前转换为第二个序列,并在之后翻译回来。

现在我想知道这个系统是否安全。

4 个答案:

答案 0 :(得分:4)

不要这样做。你必须使用标准方法;将进行试验和测试,并进行深入研究。

阅读这些作为起点

http://en.wikipedia.org/wiki/RSA

http://en.wikipedia.org/wiki/Secure_Socket_Layer

答案 1 :(得分:4)

可能来自精神上受到挑战的猴子,但NSA(或者甚至是高中新生的稍微熟练的密码学家)会在很短的时间内解密。

所有你需要解决的问题是对英语字母频率(或任何你想做分析的目标语言)和一些密文的基本知识。事实上,就不适合加密而言,它在ROT13和Pig Latin方面排名靠前。

答案 2 :(得分:2)

这种方法通常是个坏主意。事实上,我认为不足以将它用于任何目的。我建议看看众所周知的算法。正如您提到的那样,您正在使用套接字,我的实际方法是在两个端点之间创建SSL隧道。由于您没有提供有关特定语言的任何信息,因此我无法特别指出任何参考文献。

答案 3 :(得分:2)

您所描述的是一个简单的substitution cipher。这些类型的密码在古罗马使用。对密文的几十个字母进行简单的频率分析,可以完全恢复密钥,使加密与纯文本一样好,直到密钥(替换字母表)发生变化为止。

在您的情况下,其他简单攻击(如重放攻击)也可能具有相关性。攻击者可以重放先前被窃听的命令,并且收件人会认为它完全有效,即使攻击者对密钥一无所知。请注意,即使您以天真的方式使用AES等适当的密码,也可能发生此攻击 - 它可以证明整个协议的安全性有多重要。

正确的加密标准和协议如此复杂是有原因的。对我们来说幸运的是,我们不必自己重新发明或重新实现它们。在这种情况下,一个好的选择可能是TLS。几乎每个平台都有可用的库。

另外值得一试:http://blogs.msdn.com/b/ericlippert/archive/2011/09/27/keep-it-secret-keep-it-safe.aspx