Web applications 使用随机生成的密钥进行加密和解密?

Web applications 使用随机生成的密钥进行加密和解密?,web-applications,cryptography,bouncycastle,tripledes,Web Applications,Cryptography,Bouncycastle,Tripledes,我是一名j2me程序员。我的项目是通过HTTP方法向服务器发送数据。我使用Bouncy Castle(三重DES)在j2me端加密数据。我还维护服务器端编码 然后在服务器端对接收到的数据进行解密并存储在数据库中 在这里,我假设密钥是静态编码的。在服务器端和j2me端,我使用相同的键值 但基于需求,这里有一个问题:密钥是随机生成的,用户不知道 在这种情况下,如果j2me部分使用某种密钥加密数据,那么服务器如何在不知道密钥的情况下解密 或者有其他机制,请帮助解决问题 感谢和问候, 有几种方法可以实现

我是一名j2me程序员。我的项目是通过HTTP方法向服务器发送数据。我使用Bouncy Castle(三重DES)在j2me端加密数据。我还维护服务器端编码

然后在服务器端对接收到的数据进行解密并存储在数据库中

在这里,我假设密钥是静态编码的。在服务器端和j2me端,我使用相同的键值

但基于需求,这里有一个问题:密钥是随机生成的,用户不知道

在这种情况下,如果j2me部分使用某种密钥加密数据,那么服务器如何在不知道密钥的情况下解密

或者有其他机制,请帮助解决问题

感谢和问候,
有几种方法可以实现你的目标

一种方法是使用某种形式的密钥交换/协议协议,例如Diffie-Hellman式密钥交换(参见)。由于您处于J2ME环境中,您可能希望使用使用椭圆曲线的最新实现,因为椭圆曲线对您的硬件需求更为温和

实现目标的另一种方法是使用公钥证书实现安全密钥传输协议,但我不建议发明自己的安全协议,而是使用专门为这些情况设计的SSL/TLS

根据您的要求,您可能需要在其服务器身份验证(“单向SSL”)或其相互身份验证形式(“双向SSL”)中使用SSL。有关正确设置SSL的信息,请参阅web服务器的文档

设置服务器后,只需按当前操作在客户端上创建对称加密密钥,然后使用新设置的TLS连接将加密密钥发送到服务器


Diffie-Hellman解决方案的优点是,它不一定涉及证书,但要安全地使用它,您需要实现某种形式的密钥派生函数(cf),这也是非常重要的。因此,我建议使用第二种方法,即使这意味着更多的配置开销。

我认为需要某种形式的加密:“……与对称密钥算法不同,公钥算法不需要在发送方和接收方之间安全地交换一个或多个密钥……”。使用公钥加密技术交换某种会话密钥,该会话密钥是对称密钥(您的3DES密钥)。