应用JAVA进行密码加密的一种算法.doc_第1页
应用JAVA进行密码加密的一种算法.doc_第2页
应用JAVA进行密码加密的一种算法.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BZ07应用JAVA进行密码加密的一种算法现在网络的很多功能都要求网络用户在进行注册后,登陆才有权使用。一般来说注册信息中都要包含用户名、密码、电子邮箱等内容。对于密码,一般要进行不可逆的加密存储,也就是说从密码可以演算到密文,但从密文不能够反演出密码。1 代码的功能及密码到密文的算法下面对代码每一部分功能及如何实现密文不能反演出密码的算法。Main()主方法的主要功能是输入密码,显示输入的密码,输出演算出的密文。演算密码的功能将在方法transf(char c,int i)和方法cryptograph(int n,int i)中实现。方法transf(char c)的功能是将密码进行初步的转换,将密码中的每个字符分类并按照不同的类型将密码的每个字符的ASCII码加上一个干扰的偏移量,这里偏移量的取法为:若该为字符为“0”“9”的数字则将其ASCII码加上数字1,若该为字符为“a”“z”的数字则将其ASCII码加上数字2,若该为字符为“A”“Z”的数字则将其ASCII码加上数字3。这将对反演密码带来一定的干扰。通过调用方法transf(char c)可以得到int类型的数组,其值为密码的ASCII码加上相应的偏移量。真正实现密文不能反演出密码的过程是通过方法cryptograph(int n,int i)来实现的。方法cryptograph(int n,int i),主要实现了密文无法反演出密码的功能。主要算法如下:在处理第j(其含义见此方法中的变量j)位密码时对由方法transf(char c)算得的转译数组除第j个元素外的其他元素的值累加到int 类型变量modnumber中 ;然后对变量modnumber进行校验,分析其是奇数还是偶数,根据分析结果再进行下一步的处理;(1)若modnumber为偶数则将对应位的密码移位3位小写英文字母,处理过程为,将转译数组的j个元素安位不带符号的右移4位(将原有内容进行隐藏)再加上变量modnumber,得到新的变量rightn,取变量rightn对25(英文字母共26个,将26减去1)的余数加上97(小写英文字母a的ASCII码值),将得到的数值转换成字符放到密文的对应位置(由变量numch决定);(2)若modnumber为奇数,与(1)相同得到变量rightn的值,取变量rightn对9(阿拉伯数字共10个,将10减1)的余数加上48(阿拉伯数字0的ASCII码值),将得到的数值转换成字符放到密文的对应位置(由变量numch决定)。经过方法cryptograph(int n,int i)的处理后密文将很难再被演算成密码,因为在从密码演算密文的过程中已经将密码的一些信息丢弃。2 用JAVA语言对算法的实现import java.io.*;public class Encrypt public static void main(String args) int nch=new int20; /密文中间变量 int slong=0; /s 的长度 String s; /存储密码(英文字符),密码长度不超过20个英文字符 String cryp; /存放密文 char ch=new char20; /存放密码的每个字符 BufferedReader in= new BufferedReader(new InputStreamReader(System.in); try s=in.readLine(); /获取密码 slong=s.length(); /获取字符串长度 if(slong20) slong=20; s=s.substring(0,20); /如果密码长度大于20个字符,只取前20个字符 System.out.println(s=+s); /显示输入的密码 ch=s.toCharArray(); /将密码付值给字符数组 catch(IOException e) System.out.println(e); for(int i=0;i=0&c=a&c=A&c=Z) return c+3; else return c; public static String cryptograph(int n,int i) /演算密文 int j; /用于循环 int numch=0; /数组ch中圆熟的实际最大元素个数 int modnumber=0; char ch=new chari*3; String s=; String sch; for(j=0;ji;j+) for(int k=1;k4); chnumch+=(char)(rightn%25+97); rightn=rightn/10; chnumch+=(char)(rightn%25+97); chnumch+=(char)(modnumber%25+97); else rightn=modnumber+(nj4); chnumch+=(char)(rightn%9+48); rightn=rightn/10; chnumch+=(char)(rightn%9+48); chnumch+=(char)(modnum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论