我必须通过套接字发送一个从ANSI C应用程序到Java应用程序的简短字符串 - 已经完成。因为它的重要数据,我必须使用密码“abc123”来加密它。我该如何以最简单的方式做到这一点?在ANSI C中加密,在Java中解密
0
A
回答
1
通过“套接字”我假设你的意思是TCP/IP连接。在这种情况下,您应该考虑使用安全套接字层(SSL)。 SSL几乎可以解决与通过线路发送数据相关的大部分安全问题。唯一需要解决的是如何将密钥分发到管道的每一端。
我强烈建议您不要推出自己的系统。 Crypto很难正确使用,因此请使用现有的经过良好测试的实现。
如果你正在谈论一个Unix域套接字,那么你可能不需要打扰加密,因为域套接字只是进程间管道。
1
如上所述,它很大程度上取决于您想要的安全性,明智的答案是找到相同密码系统的Java和C实现并使用它们。
如果您愿意接受通常伴随家庭酿造的低安全性,我认为您在问题中采用“最简单的方式”,并假设两端的源代码和运行时都是安全的。 I.E.您只需要担心被截获的传输中的数据。您可以使用您希望的任何密码作为伪随机数生成器的种子(剩余部分通过字节索引或类似的方法划分大质数),并将数据字节与生成的随机数异或。不是最安全的,但会很快实施。
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;
}
+0
您必须确保您的PRNG在Java和C之间也一样。 – 2011-05-05 17:19:08
0
Char encrypt(char ch) {
Return (ch ^0x55);
}
相关问题
- 1. 在C++中加密/解密在x86中
- 2. 在Objective-C中加密并在Java中解密的算法
- 3. AES加密C#解密Java?
- 4. Java加密C#解密
- 5. C#/ Java | AES256加密/解密
- 6. XOR加密在Java中:解密
- 7. 加密在C /解密ROT ++
- 8. AES在C加密解密
- 9. 在C#中加密加密#
- 10. C#(加密)和Java(解密)之间的AES加密/解密
- 11. 文件加密和解密在Java中,不工作解密
- 12. 在android中加密解密
- 13. 解密在Java中
- 14. 加密在Java中(AES),解密C++(OpenSSL的)
- 15. 解密AES加密在C#中使用加密的js
- 16. 在JSP中加密,在PHP中解密
- 17. Java加密/解密
- 18. 在c中解密#
- 19. c lang加密。并在c#解密#
- 20. 在javascript中加密字符串和在java中解密
- 21. RSA:在iOS中进行加密,在Java中进行解密
- 22. RSA在Javascript中加密并在Java中解密 - NO SSL
- 23. Java加密和C#解密问题
- 24. 加密Java和解密C#和反向
- 25. RSA C#加密的Java解密
- 26. C#和Java之间的加密/解密
- 27. Java加密C#解密不会工作
- 28. 加密在Java中
- 29. 解密在Python在Java中
- 30. 在C#中加密字符串并在Delphi中解密
你想要简单性还是安全性? – 2011-05-05 15:40:00
最简单的可能只是XORing ...安全与您挑选的密码系统。 – soandos 2011-05-05 15:47:39
你可以在每个字节上执行'~'。简单但不安全。 – 2011-05-05 15:48:29