作者: 曹江华, 出处:IT专家网, 责任编辑: 张帅, 2008-06-11 10:53
在java之前,跨平台是很痛苦的事情,主要是因为所有对于系统的调用,在不同的操作系统下结果都不一样,本文将介绍数据加密技术和WizCrypt加密在solaris和Windows的跨平台实战。
一、跨平台技术简介
在java之前,跨平台是很痛苦的事情,主要是因为所有对于系统的调用,在不同的操作系统下结果都不一样,简单的来说,int的长度在不同操作系统里面就不一样,甚至于连字节排列的顺序都不同。调用同一个函数返回的格式也不同,因此,写程序的人自己要对不同的系统非常了解,如果真的需要对不同操作系统进行兼容,要在程序里面写很多if,编译的时候要先判断使用的操作系统,创造很多环境变量才能编译,而且编译好的二进制可执行文件只能在本系统上运行。如果你写的是个功能库供别人调用的,那么光对操作系统的判断就占了代码的绝大部分,而且,还要你在不同平台下进行测试,这可是个艰苦卓绝的工作。建议你有空可以看看apache httpd服务器的源代码就知道了。 自从有了java之后,就把操作系统兼容的工作丢给了jvm了,对于程序员来说就再也不要关心int有几位,还有高位在前还是地位在前的问题了,你只要用java的代码把你程序的逻辑实现出来就可以了,这些兼容的问题就交给jvm去处理吧。这样,如果你写一个程序交付给客户使用,如果客户的环境是运行AIX的,你就不需要在本地也装一个AIX来开发和运行,你可以在windows上完成所有的开发,然后把编译好的文件交给客户就可以了,以后有别的客户需要在Solaris上运行这个程序,你都不用修改,直接拿过去就可以运行,这难道不是一种方便吗?只有被跨平台开发折磨过的人才能更深得体会到用java开发跨平台应用的优势。
二、密码技术简介
使消息保密的技术和科学叫做密码编码学,从事此行的人叫密码编码者。破译密文的技术和科学就是密码分析学,从事此行的人是密码分析者。作为数学的一个分支的密码学包括密码编码学和密码分析学,精于此道的人称为密码学家,现代的密码学家通常也是理论数学家。
密码学要实现的基本功能
数据加密的基本思想是通过变换信息的表示形式来伪装需要保护的敏感信息,使非授权者不能了解被保护信息的内容。网络安全使用密码学来辅助完成在传递敏感信息时的相关问题,主要包括以下几个方面。
1.机密性(confidentiality)
仅有发送方和指定的接收方能够理解传输的报文内容。窃听者可以截取到加密了的报文,但不能还原出原来的信息,及不能知道报文内容。
2.鉴别(authentication)
发送方和接收方都应该能证实通信过程所涉及的另一方确实具有他们所声称的身份,即第三者不能冒充跟你通信的对方。
3.报文完整性(messageintergrity)
即使发送方和接收方可以互相鉴别对方,但他们还需要确保其通信的内容在传输过程中未被改变。
4.不可否认性(non-repudiation)
如果我们收到通信对方的报文后,还要证实报文确实来自所宣称的发送方,发送者事后不可能虚假地否认他发送的消息。这些功能是通过计算机进行社会交流至关重要的需求,就像面对面交流一样。某人是否就是他说的人;某人的身份证明文件(驾驶执照、医学学历或者护照)是否有效;声称从某人那里来的文件是否确实从那个人那里来的;这些事情都是通过鉴别、完整性和抗抵赖来实现的。
加密算法术语
明文:即原始的或未加密的数据。通过加密算法对其进行加密,加密算法的输入信息为明文和密钥。
密文:明文加密后的格式,是加密算法的输出信息。加密算法是公开的,而密钥则是不公开的。密文不应理解为无密钥,它用于数据的存储以及传输。
明文用M(消息)或P(明文)表示,它可能是比特流(文本文件、位图、数字化的语音流或数字化的视频图像)。对计算机而言,P是简单的二进制数据。明文可被传送或存储,无论在哪种情况,M指待加密的消息。密文用C表示,它也是二进制数据,有时和M一样大,有时稍大(通过压缩和加密的结合,C有可能比P小些。然而,单单加密通常达不到这一点)。加密函数E作用于M得到密文C,用数学表示为:
E(M)=C
相反地,解密函数D作用于C产生M。D(C)=M。先加密后再解密消息,原始的明文将恢复出来,下面的等式必须成立:
D(E(M))=M
另外要明确的概念是算法和密钥。密码算法也叫密码,是用于加密和解密的数学函数(通常情况下,有两个相关的函数:一个用作加密,另一个用作解密)。
三、使用java语言的加密解密工具WizCrypt
无论是在Linux还是Windows操作系统平台,商用或免费的加密软件非常多。但同时在Linux和Windows中,都能快速地、自由地实现加解密的开源软件就不多见。下面就介绍如何快速实现跨平台的文件加解密。本文介绍的工具WizCrypt是使用java语言编写的所以可以通过安装Java虚拟机跨平台使用。 WizCrypt加密解密原理和流程如图1
图1 是WizCrypt加密的流程
1. 首先WizCrypt是基于命令行的,通过密码文件对原文件进行加密,使用md5加密算法。
2. 加密文件的前16位字节包括MD5的 hash值。
3. 然后利用用户输入新的密码进行RC4算法加密并且输出。
WizCrypt的解密的流程:
1. 用户提供的MD5的 hash值首先进行计算。
2. 把hash值和加密文件的前16位字节进行比对。
3. 如果两者相同,则进行解密;否则提示用户并且自动退出。