近来做个很小小的项目:发送短信到服务器!短信内容要求用MD5加密,涉及到商业性,安全级别
要求高一点。
在这项目中,学得如下知识:
1、认识了MD5算法,谈不上深入,会用、了解其基本概念,仅此而已,但这已足够。
刚开始,上面说用MD5加密,以前从来没接触过加密解密,心里很是没底。通过在网上查找一定的
资料阅读,原来MD5不是加密,也是所谓的消息摘要算法。只是用来验证,内容在传输过程中是否
被意外的修改过。详细的用法描述:在客户端有一段字符串str1,经过MD5加密后,生成加密串
strpwd1,然后将客户端上的str1和strpwd1发送到服务器上,服务器端将接受到的str1经过MD5加
密,生成加密串strpwd2,将strpwd1 与 strpwd2比较,若相同则说明str1 在客户端传输到服务器
端的过程中没有被改动过。自己的话语,看不懂莫怪!应该是128个bit 也就是16个字节 为了方
便人阅读 把一个字节用16进制来表示 是两个字符 这样看上去是32个字符,实际输出的是
128bit。无论如何,经过测试,最后经过MD5加密后的结构都是32个字符。真佩服该算法的发明者
,高人也.
2、虽然该项目十分简单,但项目的本意是要求在什么手机上运行,java嘛,跨平台!在测试中发
现,根本就不是这么样,j2me程序在某是系列手机上还是可以运行的,若在不同的平台上测试,就
会出现各种各样的怪问题,作为j2me程序员的我们很无赖。上面要你解决问题,可凭借我们会的那
点j2me又无法解决,都是涉及到系统级别的问题,我们根本无法获取问题的来源,就更别提解决问
题的方案。第一次觉得这么无能为力,第一次感受到j2me程序的脆弱性!mobile系统对j2me程序的
兼容能力很弱,有的机子根本就不能运行。若要运行kjava程序,需要手动装虚拟机。于是冒出这
样一个想法:将jvm跟j2me开发出来的程序绑定在一起,目的就是在没有装java虚拟机的手机上自
动装jvm,然后再装jar程序。该问题在论坛上提问,没有得到解答。
在网上找一大堆的相关资料,纸上谈兵,公司里只有nokia的手机,无法测试。真的,有时很无奈
。
3、获取手机的IMEI号,主要是客户要能唯一标识每部手机。网上资料:能唯一标识一部手机的只
有imei和蓝牙的地址。有的手机根本不支持蓝牙,解决问题的办法只有获取imei号,当今每个系列
的手机获取imei的方法不一样,这又是问题。试着获取某一系列手机的imei号,真机测试发现,通
过方法获取的结果为null,查找原因:主要是程序未数字签名。不知道是否,公司无数字证书,不
得而知。该问题引申出一系列解决方案:通过写文件,因为文件存在磁盘上,无论该程序是否存在
,只要程序访问该文件即可判断是不是同一手机。代码写好后,在nokia上测试发现,系统根本不
让读取文件,总是抛出安全异常,可以要程序需要签名方能访问。后来想到UUID,在j2me中不支持
,无效方法。最后预先模拟一下数字签名-- 自签名,按照资料上说的一步步做好自签名,在手机
上还是无法正常使用,今天下午跟同事做了一下午,问题还没解决。
-------------若真的有一天,手机上的操作系统如pc机系统一样,有个厂商的系统一统天下,或
是每个系统都提供第三方的接口(不是我自己的想法,老大说的),我们的工作就好做多了,期待
.....
近来在学习游戏开发,利用空余时间,正在做一个射击类的小游戏,就当练练手,遇到很多问题,
收获很多。等做好,再来写,待续.....