APP下载

基于Java语言设计的加密和解密算法系统

2014-04-29巢喜剑

西江月·上旬 2014年4期
关键词:网络安全

巢喜剑

【摘 要】目前,计算机技术及网络技术的飞速发展,以及网络带来的便利性,促使人们对网络的应用越来越广泛,在办公、娱乐等各个方面对网络都有不同程度的依赖,在应用的同时,既涉及到数据的安全,又关系到网络传输速度两方面问题。基于安全考虑必须对所要传输的数据进行加密,国际上通用的公开算法有DES算法、RSA算法等,但这些算法实现起来有相当的复杂性,特别RSA算法运算速度较慢,不适合一般办公娱乐的需要。本文介绍了一种相对简单有效的数据加密解密方法,本程序中的加密解密算法系统具有简单的Base64加密解密功能。

【關键词】网络安全;DES算法和RSA算法;Base64加密解密

一、设计项目分析

1.1 需求分析。该项目没有使用到数据库,算法相对简单,在深入研究Base64编码原理和方案后,我们发现完全可以不采用标准固定编码表,而采用自定义的编码表,这样我们可以将属于自己的编码表当作密钥的方法,来实现文件的编码,这样编码后的文件能够很好地在网络上传输,同时,只有知道密钥的解码器,才能正确解码出文件的真实内容,达到了保密的作用,从而在一定程度上使得文件在网络上传输方便快捷、安全可靠。

1.2 实现目标。1、设计加密算法(可以简单或复杂),对输入明文加密,同时将密文对比显示出来。2、设计解密算法,将密文利用解密算法还原为明文,同时将原始明文、密文和解密后明文对比显示。

二、系统设计

2.1 模型分析。Base64编码的解码过程是加密过程逆向过程,采用标准编码表Base64编码的方法使得经过Base64编码的文件能被所有采用标准编码表的Base64解码器解码,恢复文件的本来内容。具体的解密过程如下:a.将得到的Base64编码流转化为二进制数据流;b.取出Base64 编码流的一个字符;c.将这字符通过取编码表值,转化成6位二进制数据流;d.重复b步骤,直到所有的Base64编码流被取空;e.返回解码的二进制数据流。不难看出采用标准编码表Base64编码的方法使得经过Base64编码的文件能被所有采用标准编码表的Base64解码器解码,恢复文件的本来内容,这样编码后的文件虽然可以在网络上传输,但不具备网络信息安全保密性能。

主要算法程序:

import org.apache.commons.codec.binary.Base64;

public abstract class Base64Coder {

/**

* 字符编码

*/

public final static String ENCODING = "UTF-8";

/**

* Base64编码

*

* @param data 待编码数据

* @return String 编码数据

* @throws Exception

*/

public static String encode(String data) throws Exception {

// 执行编码

byte[ ] b = Base64.encodeBase64(data.getBytes(ENCODING));

return new String(b, ENCODING);

}

/**

* Base64解码

*

* @param data 待解码数据

* @return String 解码数据

* @throws Exception

*/

public static String decode(String data) throws Exception {

// 执行解码

byte[] b = Base64.decodeBase64(data.getBytes(ENCODING));

return new String(b, ENCODING);

}

}

2.2 流程分析。1、运行Java程序Base64Coder.java和Base64CoderTest.java进入加密解密界面。2、然后在框中输入明文信息,点encode对明文进行加密。3、点击decode对密文进行解密,明文密文对比显示在界面上。4、点击clear时,清除框中的明文和密文。

三、基于Java设计的加密和解密算法系统分析

通过对程序需求的分析,对其功能进行分析。首先,该程序采用C/S架构,由加密和解密算法组成。

为实现服务器的功能,需要建立以下两个类:

1、算法主框架类:Base64Coder.java。算法类主要提供了具体算法。采用Base64编码是数据库加密的常用方式, 在数据库内能把二进制的数据编码或者解码成base64文本, 就可以用存储过程从e-mail和HTTP服务器认证发送数据并解码。在使用Base64处理中文的多语言时, 需要注意中文编码的问题。如常用的中文编码有GBK、GB2312和Unicode等。在处理Base64编码时, 必须统一使用中文编码。

2、编码与解码测试类:Base64CoderTest.java。包含界面显示,编码解码实现,完成加密解密功能。Base64编码要求把3个8位字节转化为4个6位的字节,在6位的前面补两个0,形成8位一个字节的形式。把8位的字节连成一串, 然后每次顺序选6个出来,再把这6个二进制数前面再添加两个0,就成了一个新的字节。之后再选出6个来, 再添加0,依此类推, 直到二进制数全部被选完。Base64有其自身的编码表,如表1所示。Base64编码方式并不是单纯利用转化完的内容进行编码。像‘\字符是控制字符, 并不能通过计算机显示出来, 在某些场合就不能使用了。Base64编码的结果不是根据算法把编码变为高两位是0而低6位代表数据,而是变为表1的形式,如”A”就有7位, 而”a”就只有6位。编码的编号对应的是得出的新字节的十进制值。

3、为实现加密解密的功能,需要加一个界面窗口:提供了人机交互界面,方便对比显示。

四、结束语

本文首先实现了加密解密算法的功能,应用自定义编码表的Base64编码,无需更改编码及解码程序,只需简单的自定义编码表即可,因此,实现容易,在一定程度上提高了算法的安全性。程序可以有效地实现Base64编码的加密与解密,比较清晰的显示了整个Base64编码加密与解密的过程,通俗易懂。程序在Windows XP下调试通过。

【参考文献】

[1]史士英,李作纬.RSA快速算法的优化研究[A].第九届中国青年信息与管理学者大会论文集[C].2007.

[2]王莹,何大军.AES加密算法的改进与实现[J].电脑编程技巧与维护,2010(17).

[3]张维振.基于两种加密算法的加密解密系统的设计与实现[D].电子科技大学,2010.

猜你喜欢

网络安全
网络安全知多少?
新形势下的特种设备网络安全防护探讨
新量子通信线路保障网络安全
网络安全
网络安全人才培养应“实战化”
上网时如何注意网络安全?
网络安全与执法专业人才培养探索与思考
设立网络安全专项基金 促进人才培养
网络安全监测数据分析——2015年12月
网络安全监测数据分析——2015年11月