我知道有几种技术可以加密数据。我对它们并不熟悉所以我一直在想办法使我的应用程序更安全。我基本上有服务器应用程序和客户端应用程序。客户端应用程序将数据发送到服务器应用程序无论如何,如果你可能熟悉这个协议,你就会知道,所有写入网络流的东西都会被另一方接收。我基本上发送字节。所以我的算法是这样的:
我准备好一个字节数组发送到服务器。修改该字节数组。所有依赖于值大于0且小于50的字节都会为它们添加5。所有大于49且小于100的字节都加2 2。并继续对剩下的字节做同样的事情。
然后在服务器端我将采用相反的技术。
这会安全吗?如何有人嗅探包裹能够找到我发送的内容?谢谢大家的帮助。我一直在考虑算法,我提出了几个算法:
假设我想发送字节[] {5,89,167,233,23,48,79}
第一步:我将一个随机字节添加到数组的索引0:
所以现在新的字节数组是{X,5,89,167,233,23,48,79}
让我们假设x出现了75
如果大于-1且小于50,我将应用算法编号2 2。如果它大于49且小于100,我将应用算法3两个......等等......
在这种情况下,我们将使用算法3:
所以算法3基本上会改变每3个连续字节的顺序,所以我要发送的实际字节是:{X,167(三个连续字节的最后一项),5(第一项),89(第二项) ),48(接下来的三个连续字节的最后一项),233(拳头),48,null,79,null)
读取空字节以获得{X,167,5,89,48,233,48,79}
------->
现在服务器将获得{X,167,5,89,48,233,48,79}回忆x是75因此它将应用算法3来解密。它将以相反的顺序基本相同。
所以它将执行{5(前三个连续字节的第二项),89(最后一项),167(前三个字节的第一项),
233(接下来的三个字节中的第二项),23,48,
79
然后服务器将有5,89,167,233,23,48,79
如果X将是1,例如我会做同样的事情,但不是在三个chuks中这样做我会在2.块基本上翻转字节。如果x已经是130,那么在4的块中做同样的事情......
我不打算放下一个技术。我可能会想出几种技术,我喜欢算法lol。
我想我必须考虑黑客会做什么。我可能会成为一个坏黑客,因为我不知道加密,但我想到了这一点。好我是黑客,我希望能够看到通过网络发送的内容。所以,如果我是黑客,我看到{X,167,5,89,48,233,48,79}我将无法说出任何正确的话。但由于我是一个聪明的黑客,我得到了流程这些字节的程序,以试图找出它。然后我将使用该程序发送一些简单的东西,例如包含字节{0,1,2,3,4,5,6}的文件
通过多次发送这些字节,黑客将能够看到类似的东西:
{45,1,0,3,2,5,4,6}
然后可能
{44 1,0,3,2,5,4,6}
....等
从这个角度来看,现在我明白为什么要弄清楚它可能更容易。
答案 0 :(得分:5)
良好的加密不依赖于算法,它必须取决于密钥!加密算法是众所周知的标准,并且依赖于密钥的秘密,而不是算法!
答案 1 :(得分:4)
首先,您的方案无法解密,例如47也变为52而50变为52。其次,它是不安全的,因为任何使用你的算法的人都可以很容易地解码你的密文(好吧,至少尽可能好,因为你甚至不能解码所有的消息)。此外,一个简单的基于频率的方法将起作用,因为这基本上是一个替代密码......
答案 2 :(得分:3)
我对他们并不熟悉所以我一直在想办法让我的 应用更安全。
停在那儿。不熟悉已经存在的解决方案并不是尝试从头开始发明一种新解决方案的理由,该解决方案至少与已经存在的解决方案一样安全。您的努力应该指向熟悉至少一种解决方案,即SSL。我向你保证,它比你在短期内想出的任何东西都要安全得多。
当然,正如您刚刚发布的算法一样,它已经不安全了。