2

我正在使用加密(河豚对称)来发送数据包。从安全的角度来看,在数据包的开头有一个标头(也与数据包的其余部分一起加密)是一个坏主意,我可以用它来验证数据包是否有效?

伪代码示例:

byte[] verificationHeader = [1,2,3,4,5];
receive(packet);
unencrypt(packet);
if (packet.getData().beginswith(verificationHeader)) {
   // assume packet is good, try to do something with it
} else {
   // drop packet
}

我想验证它,因为任何其他应用程序都可能在我的组中广播,我不想与其他东西混在一起。

它可能会帮助黑客解密我的数据包吗?

如果这是一个坏主意,那么你能建议一个替代方案吗?

4

2 回答 2

1

至少在理论上,这是一个非常糟糕的主意——它让进行暴力攻击的人知道了一个已知的“目标”,所以当/如果他们得到正确的密钥时,就会知道它(并且很快就会知道)。

至少从安全的角度来看,将该部分保留为明文会更好。它也可能更实用——如果它无论如何都不会有用,它可以让你免于解密。

于 2012-04-16T23:11:22.553 回答
0

我不确定这是否是个坏主意,但如果你决定是这样,那么也许你可以发送一个随机数,然后是随机数或带有标题。然后在另一边你或那个号码再次随机数。然后你不会多次发送相同的东西,但它都是加密的,所以它是不可破解的。我认为我的数学是正确的,但这个想法仍然成立。

ie
value = random | header;
send (random, value);
header = random | value;
于 2012-04-16T23:21:41.783 回答