有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用ANSI C加密,用Java解密

我必须通过socket将一个短字符串从ANSI C应用程序发送到Java应用程序——已经完成了。因为它的重要数据,我必须使用“abc123”这样的密码对其进行加密。我该如何以最简单的方式来做呢


共 (3) 个答案

  1. # 1 楼答案

    我想你说的“套接字”指的是TCP/IP连接。在这种情况下,您应该考虑使用安全套接字层(SSL)。SSL基本上解决了与通过网络发送数据相关的大多数安全问题。唯一需要解决的是如何将密钥分配到管道的每一端

    我强烈建议你不要使用自己的系统。加密很难正确实现,所以请使用现有的、经过良好测试的实现

    如果您谈论的是Unix域套接字,那么您可能不需要担心加密,因为域套接字只是进程间管道

  2. # 2 楼答案

    如前所述,这在很大程度上取决于您希望它有多安全,明智的答案是找到相同密码系统的Java和C实现,并使用它们

    如果你愿意接受家庭酿造这些东西通常会带来的较低安全性,我假设你在你的问题中是“最简单的方式”,并且假设两端的源代码和运行时都是安全的。也就是说,你只需要担心传输中的数据被截获。你可以使用你想要的任何密码作为伪随机数生成器的种子(大素数除以字节索引或类似值的剩余部分),然后用生成的随机数对数据字节进行异或运算。虽然不是最安全的,但实施起来很快

    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;
    }
    
  3. # 3 楼答案

    Char encrypt(char ch) {
     Return (ch ^0x55);
    }