1、基于B S的RC4算法的加密与解密程序基于B/S的RC4算法的加密与解密程序第一部分 使用说明 21.环境需求 31.1硬件要求 31.2软件要求 32.软件的安装和环境设置 32.1MyEclipse 8.6 的安装与配置 32.2Tomcat 6.0服务器的安装与配置 32.2.1安装 32.2.2配置 32.3JDK的安装和Java环境配置 42.3.1配置 43.程序使用说明 53.1程序使用步骤 53.2结果显示 6第二部分 设计说明 71.引言 71.1背景 71.2算法核心 71.2.1基本概念说明 71.2.2程序流程图 82.算法设计 82.1密钥的生成与加密解密过程 82.
2、1.1初始化S-box,并用T置乱S 82.1.1密钥的生成 92.1.3加密与解密 92.2界面设计 92.3Servlet框架 113.总结 11第一部分 使用说明1.环境需求1.1硬件要求实际使用最低配置要求:CPU:Intel Premium2 450MHz 内存:128MB 硬盘空间:4GB 注:实际的要求因系统的配置和选择安装的应用程序和功能的不同而各异。1.2软件要求MyEclipse 8.6 :本程序需要用到MyEclipse 8.6 进行java编程,通过java算法实现核心算法,同时MyEclipse 8.6中可以直接实现JSP界面生成等。Tomcat 6.0 :MyEcl
3、ipse 8.6中需要Tomcat 6.0服务器的链接。JDK: 同时需要安装JDK浏览器:最后结果显示Servlet:基本框架2.软件的安装和环境设置2.1MyEclipse 8.6 的安装与配置直接通过myeclipse-8.6.1-win32.exe,并根据安装向导进行安装,待tomcat服务器及jdk安装后再进行具体环境配置。2.2Tomcat 6.0服务器的安装与配置2.2.1安装若下载的为ZIP压缩文件型,则可以直接解压到文件夹中;若是安装文件型,则执行相应的安装文件,并选择合适的路径安装。2.2.2配置在进行安装tomcat完毕后,windows的选项中进入preference,
4、之后preference-myeclipse-servers-tomcat进行配置。之后在使用时候再在MyEclipse中新建所作项目chenlei时候ADD tomcat服务器。2.3JDK的安装和Java环境配置2.3.1配置安装了JDK后,进行环境变量的配置,主要由三部分:JAVA_HOME, PATH,CLASSPATH。右键选择“我的电脑”,选择【属性】,在出现的系统设置的窗口中,选择“高级系统设置”“环境变量” “系统变量” “新建”JAVA_HOME配置: PATH的配置:CLASSPATH的配置:3.程序使用说明 3.1程序使用步骤打开文件夹“0909030444陈蕾”,再打开
5、“程序代码”文件夹,找到其中WebRoot文件夹。打开tomcat所在的安装目录下的webapps,如E:tomcat apache-tomcat-6.0.30webapps。并将WebRoot文件夹复制到webapps文件夹下。在3.2结果显示再在浏览器中打开http:/localhost:8080/chenlei/home.jsp,进行加密解密尝试。第二部分 设计说明1.引言1.1背景RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节。该算法的速度可
6、以达到DES加密的10倍左右,且具有很高级别的非线性。RC4起初是用于保护商业机密的。但是在1994年9月,它的算法被发布在互联网上,也就不再有什么商业机密了。在今天,RC4算法是一种在电子信息领域加密的技术手段,用于无线通信网络,是一种电子密码,只有经过授权(缴纳相应费用)的用户才能享受该服务。1.2算法核心 RC4算法的原理很简单,包括初始化算法和伪随机子密码生成算法两大部分。假设S-box长度和密钥长度均为为n。首先是初始化S-box,在有产生的临时矢量T对S进行置乱,进入密钥生成阶段。得到的密钥用以和明文进行异或(xor)运算,得到密文,解密过程也完全相同。算法简单高效,安全性较高。1
7、.2.1基本概念说明S-box:256 bytes,8*8的S盒,在程序算法实现中是一个状态矢量S ,S0,S1,S2,.,S255。所有项都是数字。密钥K:长度为1-256 bytes(8-1024 bits)。临时矢量T:一个256个字节的数组。用密匙填充该数组,不断重复密匙。异或运算:异或(xor)是一个数学运算符。它应用于逻辑运算。异或符号为“”。 RC4算法运用的是:PKK=P明文:plaintext密文:ciphertext1.2.2程序流程图2.算法设计2.1密钥的生成与加密解密过程2.1.1初始化S-box,并用T置乱S在初始化的过程中,密钥的主要功能是将S-box搅乱,i确保
8、S-box的每个元素都得到处理,j保证S-box的搅乱是随机的。 部分 Java代码:public String encrypt(String plaintext) String ciphertext=new String(); int S=new int256;/状态矢量S int T=new int256;/临时矢量T / 初始化状态矢量S,同时生成临时矢量T for(int i=0;i256;i+) Si= i; Ti=Ki%K.length;/将密钥K存入T中 /用T置乱S int j=0; for(int i=0;i256;i+) j=(j+(int)Si+(int)Ti)%256;
9、 swap(Si,Sj); 2.1.1密钥的生成不同的S-box在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,并且,该序列是随机的: 部分Java代码:int i=0,j=0; int c=0; int t; byte k;/密钥流的当前字节 byte P=plaintext.getBytes(); byte C=new byteP.length; while(cP.length) i=(i+1)%256; j=(j+Si)%256; swap(Si,Sj); t=(Si+Sj)%256); k=(byte) St; 2.1.3加密与解密得到的密钥k用以和明文进行异或运算,得到密
10、文,解密过程也完全相同。部分Java代码:(接上一步)Cc=(byte) (kPc); System.out.print(Cc+ ); c+; System.out.println(new String(C); ciphertext=new String(C); return ciphertext; 2.2界面设计界面设计简洁,主要由三个文本输入框,并相应设置两个href的链接,相当于两个按钮,用户可以点击“加密”“解密”实现加密解密。当用输入一段明文,并点击“加密”(或“解密”),请输入一句话: 加密 此时调用doencrypt() function doencrypt() document
11、.form1.domethod.value=encrypt; document.form1.submit(); function dodecipher() document.form1.domethod.value=decipher; document.form1.submit(); 提交并将参数传递给Severlet 由Severlet中经过Java 算法解密或加密后的结果,返回页面,由页面显示。 所得密文:input type=text name=cipherText value= / 解密 所得明文:input type=text name=getPlain value= / 2.3Se
12、rvlet框架 Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 当Servlet收到页面操作中传来的参数后,提取传来的参数:若是加密demethod.equals=”encrypt”,则由得到的明文,通过RC4 Java算法开始对其加密,并将结果显示出来,传回页面显示在页面上。if(domethod.equals(encrypt) String plain=request.getParameter(plainText); RC
13、4 rc4=new RC4(); String cipher=rc4.encrypt(plain); System.out.println(cipher); request.setAttribute(cipher, cipher); request.getRequestDispatcher(./home.jsp).forward(request, response);若是加密demethod.equals=”decipher”,则由得到的密文,通过RC4 Java算法开始对其解密,并将结果显示出来,传回页面显示在页面上。 if(domethod.equals(decipher) String
14、cipher=request.getParameter(cipherText); RC4 rc4=new RC4(); String plain=rc4.encrypt(cipher); request.setAttribute(plain1, plain); request.getRequestDispatcher(./home.jsp).forward(request, response); 3.总结该算法程序还存在很多值得改进之处,还不够完善,比如还不能进行文件的加密,也许还存在一些不能正常加密的情况,但是在整个编程过程中,对于知识的贯通性,思维的缜密性等都得到了锻炼,可以说是一次虽不完善但是体验良多的编程经历,收获良多。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2