加密算法设计

代码的功能及密码到密文的算法

  下面对代码每一部分功能及如何实现密文不能反演出密码的算法。

  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项目《教师年终个人成果统计系统的设计与应用》实战(一)——密码加密算法...相关推荐

  1. Java毕设项目电商平台客流统计系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目电商平台客流统计系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(W ...

  2. 药店的药品销售统计系统的设计与实现

     药店的药品销售统计系统的设计与实现 问题描述:设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号.单价.销售量或销售额做出排名. 1.基本要求, (1)药品的信息包括:药品编号. ...

  3. 篮球赛场数据统计系统数据库设计实例

    篮球赛场数据统计系统数据库设计实例 研究内容(篮球赛场数据统计系统)    1)比赛前对球队.球员各项基本信息的录入功能: 2)比赛时对进球得分.各种进球类型以及裁判评判情况等数据和信息的记录功能: ...

  4. 计算机一级扫描件,学院年终科研成果统计提交成果扫描件要求

    为完善学院科研成果支撑体系,方便学院填报各类申报材料,经学院研究,现收集各位老师科研和教学类成果扫描件,具体要求如下: 一.科研成果扫描件统计范围 科研成果统计当年,凡是第一作者或主持人为我院教职工的 ...

  5. jsp+ssm计算机毕业设计高校教师教学助手系统的设计与实现【附源码】

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  6. clicki网站统计系统logo设计

    clicki网站统计系统logo 小编最近给博客增加了个个性的统计工具<clicki网站统计>刚开始就因为其独特的界面所吸引,其中很多工具都显得很实用,其中最经典的应该莫属于Widgets ...

  7. jsp mysql 在线相册_网上电子相册系统的设计(JSP+MySQL)含录像

    摘 要:网上电子相册系统是采用JSP开发的一个基于B/S构架的连接数据库的电子相册网站.相比起互联网的发展,电子相册出现的时间不算太长,但却迎合了大多数网民的需求,是一个大有"前途" ...

  8. 基于ASP.NET网站流量统计系统的设计与实现

    在这个网络急速发展的时代,网站在日常生活中是必不可少的,网站所产生的付出回报率相对应的就显得尤为重要,一个强大.方便的网络流量统计管理系统能使网站的使用变得更加方便快捷.当前国内在这个方面的研究做的比 ...

  9. SpringBoot+Vue项目大学校园防疫与服务系统的设计与实现

    文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript.Vue .css3 开发工具:IDEA/MyEclipse/Eclipse.Visual Studi ...

  10. 燕山大学课程实践项目报告:ISBN号识别系统的设计与开发

    文章目录 摘要 前言 正文 一.研究内容的基本原理 二.所采用的研究方法及相关工具 三.项目的方案设计 四.核心代码实现 1.读取图片 2.将原图转化为灰度图 3.去噪处理 4.迭代法求阈值 5.水平 ...

最新文章

  1. 二叉树的高度-递归-JS实现
  2. 世界卫生组织高血压防治指南_建立对团队和组织的信任的指南
  3. 可以改位置吗_恒大文化旅游城售楼部位置外地人可以买吗优选好房泗洪
  4. c# 日期转换为单词
  5. ANTLR笔记2 - 简单语法说明
  6. 的有效 海思编码_【最佳案例展示】2020年CUVA“超高清视频创新产品与解决方案”全球首款8K@120解码芯片海思Hi3796CV300...
  7. EAR、JAR、WAR(IT)
  8. CAPL学习之路-DoIP相关函数
  9. Java、JSP医院药库管理系统
  10. 基于exchange 2010迁移exchange 2016搭建共存环境
  11. 素数筛普通筛法全解(C/C++)
  12. 浅谈RASP技术攻防之实战
  13. 图形驱动程序和显卡驱动什么区别_鸡血驱动已发布,可新买的显卡打不上驱动?这事儿别急...
  14. ffmpeg将图片合成视频
  15. 数学笔记23——部分分式
  16. win10黑色护眼风格一波带走
  17. android MapBox地图基于openstreetmap开发
  18. codeforces#375(div.2)723D - Lakes in Berland dfs+bfs
  19. Windows 安装,配置SVN
  20. BIM 那些事广联达BIM 5D

热门文章

  1. 四十二、在线预览pdf文件
  2. Linux系统解决SSH登录慢的详细步骤
  3. 6.5. Properties
  4. Oracle 学习之RMAN(四)增量备份
  5. exec和source的区别
  6. 042 第一章 简介
  7. 【新概念第一册】Lesson_11 Is this your shirt?
  8. 《Java程序员,上班那点事儿》征文活动获奖名单
  9. 整理转载:分枝定界图解(含 Real-Time Loop Closure in 2D LIDAR SLAM论文部分解读及BB代码部分解读)
  10. 第四季-专题16-触摸屏驱动程序设计