0引言信息作为一种资源,具有普遍性、共享性、增值性、可处理性以及多效用性等特征,使其对于人类具有特别重要的意义[1]。信息安全的概念在二十世纪经历了一个漫长的历史阶段,90年代以来得到了深化[2]。进入21世纪,随着计算机技术的发展,信息安全的重要性不断凸显。信息安全的实质就是保护信息系统或信息网络中的信息资源免受各种类型的威胁、干扰以及破坏[3]。目前主要通过加密方法对信息进行处理,达到保证信息的保密性和完整性的目的[4]。数据在存储、处理和交换等环节中,都存在泄密、截收、窃听、窜改以及伪造的可能性[4]。通过对多种加密算法的分析和研究,实现了集成化的加密通信平台,以满足数据保密性和完整性的客观需求。1方案设计和关键算法实现在本设计中,主要完成基于socket的点对点通信及文件传输、对称和非对称通信加密、对称和非对称文件传输加密、文件签名认证等内容。1.1方案设计图1主要模块关系结构主要模块的层次关系如图1所示,各模块的主要功能:(1)trans.cipher:负责实现加解密相关的功能,具体来说即实现AES,DES,RSA三种加解密算法,向外提供相关API。(2)trans.control:通过调用trans.cipher,trans.config,trans.control,trans.thread,trans.util的相关API,负责软件的主要业务逻辑,响应trans.view所捕获的界面用户操作。(3)trans.thread:负责实现用于socket通信的监听线程和连接线程。(4)trans.util:负责向其他包提供常用基础功能,如字节数组操作。(5)trans.view:负责软件界面结构布局及用户输入响应。1.2关键模块实现(1)trans.cipher.Asym Encryptor负责实现非对称加解密功能,主要方法说明:1encrypt/decrypt/sign/authenticate,实现对byte数组的加解密、签名认证功能。2get Pubkey/get Privkey,从密钥中获取密钥。(2)trans.cipher.Sym Encryptor负责实现对称加解密功能。(3)trans.thread.Connection Thread.run是连接线程的具体实现,该线程既负责响应来自用户的输入事件也负责不断的从socket中读取数据。(4)trans.control.Main Control.do Send File主要负责通过socket来传输一个文件,传输时先对文件进行相应的加密操作。文件的签名发送与此类似,不再重复。(5)Trans.util.Byte Array Util为实现基于socket的文件传输,通过在字节流前加入特定标识的方式来区分文件和普通消息。然而,实现这样的设计前提是对字节数组进行灵活的前缀添加,子序列查找等操作。为此实现了Byte Array Util类来支持此类功能。在该类的方法中,值得一提的是字节数组中子序列查找的算法,为了提高效率,在此运用了KMP匹配算法。1.3程序运行用eclipse中的打包工具将程序打包为可运行的JAR文件。安装java虚拟机,版本至少为1.6以上,双击sec.jar即可执行程序。2主要使用方法主要包括用户登录及建立连接,设置加密方式,传输消息或文件,设置解密方式,解密消息或文件,RSA密钥管理,RSA签名认证等环节。图2登录角色选择2.1用户登录及建立连接(1)输入用户名,进行登录并选择角色(服务端或客户端)。(2)服务端指定监听端口进行监听。客户端指定服务端的IP地