C# 在tcp连接上使用我自己的安全算法

C# 在tcp连接上使用我自己的安全算法,c#,security,networking,tcp,C#,Security,Networking,Tcp,我知道有几种加密数据的技术。我对它们不熟悉,所以我一直在考虑如何使我的应用程序更安全。我基本上有一个服务器应用程序和一个客户端应用程序。客户端应用程序将数据发送到服务器应用程序。无论如何,如果您可能熟悉该协议,您将知道写入网络流的每一个内容都将被另一方接收。我基本上是发送字节。所以我的算法是这样的: 我有一个字节数组准备发送到服务器。修改该字节数组。所有值大于0小于50的字节加上5。所有大于49小于100的字节加上两个。在剩下的字节中继续做同样的事情 然后在服务器端,我将使用反向技术 这安全吗?

我知道有几种加密数据的技术。我对它们不熟悉,所以我一直在考虑如何使我的应用程序更安全。我基本上有一个服务器应用程序和一个客户端应用程序。客户端应用程序将数据发送到服务器应用程序。无论如何,如果您可能熟悉该协议,您将知道写入网络流的每一个内容都将被另一方接收。我基本上是发送字节。所以我的算法是这样的:

我有一个字节数组准备发送到服务器。修改该字节数组。所有值大于0小于50的字节加上5。所有大于49小于100的字节加上两个。在剩下的字节中继续做同样的事情

然后在服务器端,我将使用反向技术

这安全吗?嗅探软件包的人如何才能找到我发送的内容


编辑 谢谢你们的帮助。我一直在思考算法,我想出了几个:

技术1 假设我想发送字节[]{5,89167233,23,48,79}

第一步:我将向数组的索引0添加一个随机字节:

现在新的字节数组是{X,5,89,167,233,23,48,79}

让我们假设x等于75

如果大于-1且小于50,我将应用算法2。如果它大于49小于100,我将应用算法3两个它。。。等等

在这种情况下,我们将使用算法3:

所以算法3基本上会改变每3个连续字节的顺序,所以我要发送的实际字节是:{X,167(三个连续字节中的最后一项),5(第一项),89(第二项),48(下三个连续字节中的最后一项),233(第一项),48,null,79,null)

读取空字节以获取{X,167,5,89,48233,48,79}

------->

现在服务器将得到{X,167,5,89,48233,48,79}回忆起X是75,因此它将应用算法3进行解密。基本上是相同的事情,顺序相反

因此它将执行{5(前三个连续字节的第二项)、89(最后一项)、167(前三个字节的第一项)

233(接下来三个字节的第二项)、23、48、

七十九

然后服务器将有5,89167233,23,48,79

例如,如果X是1,我会做同样的事情,但不是三人一组做,而是在2个字节的块上做。基本上是翻转字节。如果X是130,那么在4个字节的块上做同样的事情


我不打算介绍下一种技术。我可能会想出几种我喜欢的技术

我必须说我同意你们所有人让我告诉你们为什么。。。 我想我必须考虑黑客会做什么。我可能会是一个坏黑客,因为我不知道加密,但我考虑过这个。好的,我是一个黑客,我希望能够看到通过网络发送的内容。所以如果我是黑客,我看到{X,167,5,89,48233,48,79}我不可能什么都不说。但是因为我是一个聪明的黑客,我得到了一个程序,可以对这些字节进行流式处理,以便尝试找出答案。然后我将使用该程序发送一些简单的内容,例如一个包含字节{0,1,2,3,4,5,6}的文件

通过多次发送这些字节,黑客将能够看到如下内容:

{45,1,0,3,2,5,4,6}

那也许

{441,0,3,2,5,4,6}

……等等


从这个角度来看,我现在明白了为什么它可能更容易理解。

首先,你的方案无法解密,因为例如47变为52,50也变为52。其次,它是不安全的,因为任何使用你的算法的人都可以轻松解码你的密文(好吧,至少尽你所能,因为即使你也不能解码所有信息)。此外,一个简单的基于频率的方法会起作用,因为这本质上是一个替换密码…

首先,您的方案无法解密,因为例如47变为52,50也变为52。其次,它是不安全的,因为使用您的算法的任何人都可以轻松解码您的密文(好吧,至少尽你所能,因为即使你也不能解码所有信息)此外,一个简单的基于频率的方法也可以工作,因为这本质上是一个替换密码…

一个好的加密不能依赖于算法,它必须依赖于密钥!加密算法是众所周知的标准,依赖于密钥的安全性,而不是算法的安全性!

一个好的加密不能依赖于算法嗯,这必须取决于密钥!加密算法是众所周知的标准,取决于密钥的保密性,而不是算法的保密性

我对他们不熟悉,所以我一直在想一个办法让我的 应用程序更安全

到此为止。不熟悉已经存在的解决方案并不是尝试从头开始发明一种至少与已经存在的解决方案一样安全的新解决方案的理由。您应该努力熟悉其中至少一种解决方案,即SSL。我向您保证,这将更加安全比你在短期内可能想到的任何东西都重要

当然,由于您刚刚发布了算法,它已经不安全了

我对他们不熟悉,所以我一直在想一个办法让我的 应用程序更安全

到此为止。不熟悉已经存在的解决方案并不是尝试从头开始发明一种至少与已经存在的解决方案一样安全的新解决方案的理由。您应该努力熟悉其中至少一种解决方案,即SSL。我向您保证,这将更加安全比你在短期内可能想到的任何东西都重要

当然,当你