我写了一个类似ICQ的通信程序,我想用RSA的密码机制进行加密传输,对方是需要知道我的公钥的,我程序是这样写的当一个客户端连接上服务器的时候就会将它随机获取的密钥对的公钥发送给服务器,此时服务器开辟一块缓存区保留连接上的用户的 公钥,这时我在客户端添加一个获取好友公钥的按钮,只要好友连接上来了,我便能获取成功,此时可以用Rsa会话,显然的,当我用好友的公钥给其发信息时,好友在对端用自己的私钥解密显示内容,他若想回复我的信息,他此时也应该点击按钮获取我的公钥,我收到后会用我的私钥解开显示内容,如果获取失败,说明好友根本没有上线,此时不能会话。我的问题就是公钥不是普通的String类型,用socket传输对象还要序列化好麻烦的!!!请各位大哥针对我的这个程序给个思路,就是如何在我登陆服务器的时候就能让对方知道我的公钥呢??说明 -我的密钥对获取是在一个用户连接服务器成功时随即获取的。
谢谢~

解决方案 »

  1.   

    如果你的 ICQ 程序是 Java 做的,并且是 Socket 连接的话,那么可以直接使用 JAAS 中 SSL 相关的类库,这些应该使用既有在协议层完成这些工作的 API,而不是自己跑到应用层去实现。
      

  2.   

    socket 传递byte[]数组就可以了。公钥中有getEncoded()的方法返回的,在收到这个byte[]就可以重新生成公钥了
      

  3.   

    上面说错了,不是 JAAS,是 JSSE。JSSE 与 SSL 相关的类都在 javax.net.ssl 这个包中。使用其中的类库可以实现 SSL/TLS 的 TCP 连接。比如 SSLSocket, SSLServerSocket, SSLEngine