JSP项目《教师年终个人成果统计系统的设计与应用》实战(一)——密码加密算法...
加密算法设计
代码的功能及密码到密文的算法
下面对代码每一部分功能及如何实现密文不能反演出密码的算法。
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)的处理后密文将很难再被演算成密码,因为在从密码演算密文的过程中已经将密码的一些信息丢弃。
1 // 根据网上一位也应用到JSP项目里的密码加密方法 2 public class PwdTranslator { 3 private String pwd; 4 PwdTranslator(String passwd) 5 { 6 pwd = passwd; 7 } 8 // @原始密码 pwd 9 public String PwdToSecret() 10 { 11 char[] c_pwdArr = new char[20]; // 偏移后的密码 12 c_pwdArr = pwd.toCharArray(); 13 14 int[] nc_pwdArr = new int[20]; 15 int len = pwd.length(); 16 for (int i=0; i<len; i++) 17 nc_pwdArr[i] = transform(c_pwdArr[i]); // 获得密文钥匙 18 19 String cryp; // 存放密文 20 cryp = TransformFunc(nc_pwdArr, len); 21 return cryp; 22 } 23 // 加偏移量 24 private static int transform(char c_ori) { 25 if (c_ori>='0' && c_ori<='9') 26 return c_ori+1; 27 else if (c_ori>='a' && c_ori<='z') 28 return c_ori+2; 29 else if (c_ori>='A' && c_ori<='Z') 30 return c_ori+3; 31 return c_ori; 32 } 33 public String TransformFunc(int[] n, int len) 34 { 35 String end_pwd = ""; 36 int numc=0; //数组ch[]中元素的实际最大元素个数 37 int modnumber=0; 38 char[] ch=new char[len*3]; 39 for (int pos=0; pos<len; pos++){ // 处理的第pos个位置 40 for (int i=0; i<len; i++) 41 modnumber += n[(len-(pos-i))%len]; 42 int rightn=0; 43 if(modnumber%2 == 0) 44 { 45 rightn=modnumber+(n[pos]>>>4); 46 ch[numc++]=(char)(rightn%25+97); 47 rightn=rightn/10; 48 ch[numc++]=(char)(rightn%25+97); 49 ch[numc++]=(char)(modnumber%25+97); 50 } 51 else{ 52 rightn=modnumber+(n[pos]>>>4); 53 ch[numc++]=(char)(rightn%9+48); 54 rightn=rightn/10; 55 ch[numc++]=(char)(rightn%9+48); 56 ch[numc++]=(char)(modnumber%9+48); 57 } 58 } 59 for(int pos=0; pos<numc; pos++){ 60 end_pwd=end_pwd+ch[pos]; 61 } 62 63 return end_pwd; 64 } 65 }
参考源码出处:http://download.csdn.net/detail/mokton/572316
转载于:https://www.cnblogs.com/Jianlongsongat126pcom/archive/2013/04/14/3020134.html
JSP项目《教师年终个人成果统计系统的设计与应用》实战(一)——密码加密算法...相关推荐
- Java毕设项目电商平台客流统计系统(java+VUE+Mybatis+Maven+Mysql)
Java毕设项目电商平台客流统计系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(W ...
- 药店的药品销售统计系统的设计与实现
药店的药品销售统计系统的设计与实现 问题描述:设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号.单价.销售量或销售额做出排名. 1.基本要求, (1)药品的信息包括:药品编号. ...
- 篮球赛场数据统计系统数据库设计实例
篮球赛场数据统计系统数据库设计实例 研究内容(篮球赛场数据统计系统) 1)比赛前对球队.球员各项基本信息的录入功能: 2)比赛时对进球得分.各种进球类型以及裁判评判情况等数据和信息的记录功能: ...
- 计算机一级扫描件,学院年终科研成果统计提交成果扫描件要求
为完善学院科研成果支撑体系,方便学院填报各类申报材料,经学院研究,现收集各位老师科研和教学类成果扫描件,具体要求如下: 一.科研成果扫描件统计范围 科研成果统计当年,凡是第一作者或主持人为我院教职工的 ...
- jsp+ssm计算机毕业设计高校教师教学助手系统的设计与实现【附源码】
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- clicki网站统计系统logo设计
clicki网站统计系统logo 小编最近给博客增加了个个性的统计工具<clicki网站统计>刚开始就因为其独特的界面所吸引,其中很多工具都显得很实用,其中最经典的应该莫属于Widgets ...
- jsp mysql 在线相册_网上电子相册系统的设计(JSP+MySQL)含录像
摘 要:网上电子相册系统是采用JSP开发的一个基于B/S构架的连接数据库的电子相册网站.相比起互联网的发展,电子相册出现的时间不算太长,但却迎合了大多数网民的需求,是一个大有"前途" ...
- 基于ASP.NET网站流量统计系统的设计与实现
在这个网络急速发展的时代,网站在日常生活中是必不可少的,网站所产生的付出回报率相对应的就显得尤为重要,一个强大.方便的网络流量统计管理系统能使网站的使用变得更加方便快捷.当前国内在这个方面的研究做的比 ...
- SpringBoot+Vue项目大学校园防疫与服务系统的设计与实现
文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript.Vue .css3 开发工具:IDEA/MyEclipse/Eclipse.Visual Studi ...
- 燕山大学课程实践项目报告:ISBN号识别系统的设计与开发
文章目录 摘要 前言 正文 一.研究内容的基本原理 二.所采用的研究方法及相关工具 三.项目的方案设计 四.核心代码实现 1.读取图片 2.将原图转化为灰度图 3.去噪处理 4.迭代法求阈值 5.水平 ...
最新文章
- 二叉树的高度-递归-JS实现
- 世界卫生组织高血压防治指南_建立对团队和组织的信任的指南
- 可以改位置吗_恒大文化旅游城售楼部位置外地人可以买吗优选好房泗洪
- c# 日期转换为单词
- ANTLR笔记2 - 简单语法说明
- 的有效 海思编码_【最佳案例展示】2020年CUVA“超高清视频创新产品与解决方案”全球首款8K@120解码芯片海思Hi3796CV300...
- EAR、JAR、WAR(IT)
- CAPL学习之路-DoIP相关函数
- Java、JSP医院药库管理系统
- 基于exchange 2010迁移exchange 2016搭建共存环境
- 素数筛普通筛法全解(C/C++)
- 浅谈RASP技术攻防之实战
- 图形驱动程序和显卡驱动什么区别_鸡血驱动已发布,可新买的显卡打不上驱动?这事儿别急...
- ffmpeg将图片合成视频
- 数学笔记23——部分分式
- win10黑色护眼风格一波带走
- android MapBox地图基于openstreetmap开发
- codeforces#375(div.2)723D - Lakes in Berland dfs+bfs
- Windows 安装,配置SVN
- BIM 那些事广联达BIM 5D