3

I'm a j2me programmer. My project is related to sending data to server via HTTP method. I encrypt the data in j2me side using Bouncy Castle (Triple DES). I also maintain the server side coding.

Then in server side received data is decrypted and stored in database.

Here I assuming the key statically in coding itself. In server side and j2me side I use the same key value.

But here is one problem based on requirement: the key is randomly generated not known to user.

In this case if in j2me part encrypt the data with some key then how the server decrypt without knowing the key?

Or there is any other mechanism is there so please help to solve the issues.

Thanks and regards, Sivakumar.J

4

1 回答 1

1

有几种方法可以实现您的目标。

一种方法是使用某种形式的密钥交换/协议协议,例如 Diffie-Hellman 样式的密钥交换(参见http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)。当您处于 J2ME 环境中时,您可能希望使用使用椭圆曲线的最新实现,因为它们对您的硬件要求更温和。

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

根据您的要求,您需要在其服务器认证(“单向 SSL”)或相互认证的形式(“双向 SSL”)中使用 SSL。请查阅有关正确设置 SSL 的 Web 服务器文档。

一旦设置好服务器,就可以像当前一样在客户端上创建对称加密密钥,然后使用新设置的 TLS 连接将加密密钥发送到服务器。

Diffie-Hellman 解决方案的优势在于它不一定涉及证书,但要安全地使用它,您需要实现某种形式的密钥派生函数(参见http://csrc.nist.gov/publications/fips/ fips186-3/fips_186-3.pdf)这又是不平凡的。因此,我建议使用第二种方法,即使这意味着更多的配置开销。

于 2011-07-04T01:04:14.610 回答