.net客户端调用java服务端,通讯数据加密解密思路及过程
目前系统客户端用.net实现,java服务端采用了webservice的方式向客户端提供服务。
要实现的功能:验证从.net客户端登陆的用户的合法性。用户从客户端登陆,需要调用java接口验证用户信息的合法性。原java系统中采用了MD5的方式对用户的某些数据进行加密,加密后的数据保存到了DB中。
问题1:用户的某些敏感数据不能在.net的客户端用MD5进行处理。
因为原java系统中用的MD5不是通用的算法,而是对通用MD5进行了改造。糟糕的是,现在做.net客户端的程序员无法实现这个MD5。
解决办法:MD5的工作由java端处理。
即客户端传明文到java端,由java端对用户数据进行MD5处理。这样就实现了用户信息验证的功能。同时又带来了另一个问题。
问题2:数据通讯中怎么能传明文呢?太不安全了吧,别人截获了http消息,不就拿到用户数据了吗,太危险了!
解决办法:
用户的数据需要在传输的过程中做加密处理。客户端和服务端一致决定采用DES的加密算法进行加密,但具体处理的过程
中又遇到了一些问题。
问题3:.net端加密出来的数据在java端却无法正确解密。
两边的加密解密不匹配。查了一些资料才知道,.net端默认的DES算法模式和java的不同。感叹互联网的威力啊,可以找到那么多的相关资料,然后我就修修补补,敲敲打打,历尽百辛千苦,终于小功告成,呵呵。
最后的解决办法:
1.客户端和服务端对通讯数据进行了加密处理,杜绝了传递明文。
2.MD5的工作放到java端来做。
我对数据加密所知甚少,而且对通用的处理方式也不太了解,真诚希望能够得到有经验的各位多多指点,谢谢!