随着计算机应用的普及,信息的安全性越来越受到人们的重视,对数据加解密算法的研究也在不断地深入,但一般的加解密算法如des和rsa等过于复杂,且运算速度慢,特别是它的移位操作,对于vb这样的高级语言实现起来也比较困难。 而一般的mis(management information system)系统多用高级语言开发,对数据的加密要求不高,因此,研究简易数据加解密算法还是有相当的现实意义。
简易加解密算法要求:
1、 算法不宜过于复杂,且具有一定的保密性
2、 对于高级语言很容易能实现
3、 速度快,可以在任何时候、任何地方使用。
4、 加密后的数据能正确地得到解密
鉴于以上特点,从加密的主要方法看,换位法过于简单,特别是对于数据量少的情况很容易由密文猜出明文,替换法则不失为一种行之有效的简易算法。
首先,windows下的字符集采用unicode字符集,它容量大,可置换的范围广;其次,在unicode字符集中,所有字符的内码都占两个字节,不再象dos下西文字符占一个字节,中文字符占两个字节,这样无论西文还是中文都可以互换。因此,将某个字符的高字节和低字节分别加以运算,生成另外一个0-255之间的数,然后再将它们合成为另一个字符,从而置换数据达到数据加密的作用,解密时则相反。
从各种位运算的特点看,异或运算最适合用于简易加解密运算,因为当一个数a和另一个数b进行异或运算会生成另一个数c,如果再将c和b进行异或运算则c又会还原为a。如:128和253进行异或运算的结果是125,125和253再进行异或运算则结果又是128。其中,128就是要加密的数据,253则是密钥。利用这个特性可以将加密和解密用一个函数实现。用同一密钥进行奇数次运算时,是对数据进行加密运算,当进行偶数次运算时,是对数据进行解密运算。如果对unicode字符进行这种运算,需要两个密钥,其取值范围为0-255,其中一个用于对高字节加密,一个用于对低字节进行加密,这样对同一字符的加密就有255×255=65025种可能。如果更换密钥后对密文再进行加密,则会有无穷的可能性。如:密钥k1=68,k2=134,则字符a的低字节为65,它和k1异或后为5,a的高字节为0,它和k2异或后还是134,两者合成的字符为"蘅"。再如:"密"的低字节为198,和k1异或后为130,它的高字节为91,和k2异或后为221,两者合成则为一个不可见的字符。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器