uint8_t encrypt(uint8_t iData, size_t iPos) {
// Super large prime, our 'password', best kept super secret
const uint64_t iSeed = 32416190071;
// Mostly to stop divide by zero
// Also starting in the obvious place gives more info on the prime
const size_t iOffset = 10;
uint8_t iPad = iSeed % (iPos + iOffset);
return iPad^iData;
}
# 1 楼答案
我想你说的“套接字”指的是TCP/IP连接。在这种情况下,您应该考虑使用安全套接字层(SSL)。SSL基本上解决了与通过网络发送数据相关的大多数安全问题。唯一需要解决的是如何将密钥分配到管道的每一端
我强烈建议你不要使用自己的系统。加密很难正确实现,所以请使用现有的、经过良好测试的实现
如果您谈论的是Unix域套接字,那么您可能不需要担心加密,因为域套接字只是进程间管道
# 2 楼答案
如前所述,这在很大程度上取决于您希望它有多安全,明智的答案是找到相同密码系统的Java和C实现,并使用它们
如果你愿意接受家庭酿造这些东西通常会带来的较低安全性,我假设你在你的问题中是“最简单的方式”,并且假设两端的源代码和运行时都是安全的。也就是说,你只需要担心传输中的数据被截获。你可以使用你想要的任何密码作为伪随机数生成器的种子(大素数除以字节索引或类似值的剩余部分),然后用生成的随机数对数据字节进行异或运算。虽然不是最安全的,但实施起来很快
# 3 楼答案