目录

前言

1.密码加密的主要方式

2.代码的实现过程

3.整体代码


前言

随着技术的发展,密码加密技术已经越来越普遍越来越多样化,在我们生活中常见的加密算法包括了DES加密算法,AES加密算法,RSA加密算法,MD5加密算法等等。密码加密在我们国家社会生活中都起着非常重要的作用,它能保护我们的重要信息不被泄露,维护国家安全,使个人和国家和社会的利益得到良好的保障,因此加密技术的可靠性也变得越来越重要。

1.密码加密的主要方式

密码加解密简单的理解就是对字符串进行操作,通常我们的密码输入包括了大小写字母,数字,'.','_'字符,对于不同的字符可以通过产生随机数进行不同的处理,并将这些随机数与表达式相联系,通过某种方式来对随机数进行隐藏。此代码的大体处理过程对于大小写字母,先将大小写字母通过产生小于26位的随机数进行移位,比如当产生的随机数是7时,如果密码中有小写的字母a,则通过h来对a进行替代。这样就完成了第一步操作,为了更好的利用随机数再通过产生随机范围更大的随机数来对大小写字母进行移位,并将这些大小写字母移动到汉字所对应的ASCII上,以此步骤来对密码进行加密,而对随机数的处理,我们也可以通过相同的方式将随机数进行移位,而随机数移动的位数与大小写字母有一定的相关性,最后通过对不同的字符进行处理,就会得到通过随机数一位产生不同的汉字,并将这些汉字通过特定的方式组合在一起,最后就得到了密码加密的密钥了。对于密码解密过程,只需要进行反向逆推就可以得出。其中随机数可以大大的提高密钥的复杂程度,同一个密码通过加密可以得到不同的密钥。

2.代码的实现过程

3.整体代码

package zuopin;
import java.util.Arrays;
import java.util.Scanner;
class Dengluxitong {//数字初始移动的位数private int Cshuziyidongweishu;//大写初始字母移动的位数private int Cdaxiezimuyidongdeweishu;//小写初始字母移动的位数private int Cxiaoxiezimuyidongdeweishu;//数字移动的位数private int shuziyidongweishu;//大写字母移动的位数private int daxiezimuyidongdeweishu;//小写字母移动的位数private int xiaoxiezimuyidongdeweishu;//密码private StringBuilder mima;//关键信息1代表大写字母2代表小写字母3代表数字4代表'.','_'private int []sss=new int[16];//重要信息1private char []zhongyaoxinxi1=new char[8];//未知数private char []weizhishu=new char[4];//设置初始密码Dengluxitong() {this.mima = new StringBuilder("################");this.Cshuziyidongweishu=(int)(1000000+Math.random()*20000);this.Cdaxiezimuyidongdeweishu=(int)(1000000+Math.random()*20000);this.Cxiaoxiezimuyidongdeweishu=(int)(1000000+Math.random()*20000);this.shuziyidongweishu=(int)(0+Math.random()*10);this.daxiezimuyidongdeweishu=(int)(0+Math.random()*26);this.xiaoxiezimuyidongdeweishu=(int)(0+Math.random()*26);zhongyaochuli1();}//返回数字初始移动的位数private int getCshuziyidongweishu() {return Cshuziyidongweishu;}//返回大写初始字母移动的位数private int getCdaxiezimuyidongdeweishu() {return Cdaxiezimuyidongdeweishu;}//返回小写初始字母移动的位数private int getCxiaoxiezimuyidongdeweishu() {return Cxiaoxiezimuyidongdeweishu;}//返回数字移动的位数private int getShuziyidongweishu() {return shuziyidongweishu;}//返回大写字母移动的位数private int getDaxiezimuyidongdeweishu() {return daxiezimuyidongdeweishu;}//返回小写字母移动的位数private int getXiaoxiezimuyidongdeweishu() {return xiaoxiezimuyidongdeweishu;}//返回关键信息private int[] getSss() {return sss;}private void zhongyaochuli1(){zhongyaoxinxi1[0]=(char)(1020005);zhongyaoxinxi1[1]=(char)(1020002);zhongyaoxinxi1[2]=(char)(1020000);zhongyaoxinxi1[3]=(char)(1020001);zhongyaoxinxi1[4]=(char)(1020003);zhongyaoxinxi1[5]=(char)(1020001);zhongyaoxinxi1[6]=(char)(1020004);zhongyaoxinxi1[7]=(char)(1020020);weizhishu[0]=(char) (1020189);weizhishu[1]=(char) (1020270);weizhishu[2]=(char) (1020361);weizhishu[3]=(char) (1020452);}//密码输入private void setMima() {Scanner input=new Scanner(System.in);System.out.println("提示:密码的位数为8~16位,且由大小写字母,数字,'.','_'组成。");System.out.println("请输入密码:");String A;int B;int C;do {C=0;do {A=input.next();if(A.length()<8){System.out.println("输入的密码位数太短!");System.out.println("请重新输入:");}elseif(A.length()>16){System.out.println("输入的密码位数太长!");System.out.println("请重新输入:");}}while (A.length()<8||A.length()>16);for(int i=0;i<A.length();i++){B=0;for(char j='0';j<='9';j++){if(A.charAt(i)==j){B=1;sss[i]=3;break;}}if(B==0){for(char j='A';j<='Z';j++){if(A.charAt(i)==j){B=1;sss[i]=1;break;}}}if(B==0){for(char j='a';j<='z';j++){if(A.charAt(i)==j){B=1;sss[i]=2;break;}}}if(B==0){if(A.charAt(i)=='.'||A.charAt(i)=='_'){B=1;sss[i]=4;}}if(B==0){System.out.println("输入的密码格式不对!");System.out.println("请重新输入:");break;}if(i==A.length()-1){C=1;}}}while (C!=1);mima= new StringBuilder(A);}//密码输出private StringBuilder getMima() {return mima;}//密码加密private void mimajiami(){int A=0;for(int i=0;i<mima.length();i++){if(mima.charAt(i)=='#')A++;}if(A==16){System.out.println("密码没有进行输入,无法进行加密!");}for(int i=0;i<mima.length();i++){for(char j='A';j<='Z';j++){if(mima.charAt(i)==j){culi1(i);break;}}for(char j='a';j<='z';j++){if(mima.charAt(i)==j){culi2(i);break;}}for(char j='0';j<='9';j++){if(mima.charAt(i)==j){culi3(i);break;}}if(mima.charAt(i)=='.'||mima.charAt(i)=='_'){culi4(i);}}}//正向处理A~Z位的密码private void culi1(int i){char A;A=(char)(mima.charAt(i)+Cdaxiezimuyidongdeweishu);mima.setCharAt(i,A);if(mima.charAt(i)+daxiezimuyidongdeweishu>(char)(90+Cdaxiezimuyidongdeweishu)){A=(char)(mima.charAt(i)+daxiezimuyidongdeweishu-26);mima.setCharAt(i,A);}else{A=(char)(mima.charAt(i)+daxiezimuyidongdeweishu);mima.setCharAt(i,A);}}//正向处理a~z位的密码private void culi2(int i){char A;A=(char)(mima.charAt(i)+Cxiaoxiezimuyidongdeweishu);mima.setCharAt(i,A);if(mima.charAt(i)+xiaoxiezimuyidongdeweishu>(char)(122+Cxiaoxiezimuyidongdeweishu)){A=(char) (mima.charAt(i)+xiaoxiezimuyidongdeweishu-26);mima.setCharAt(i,A);}else{A=(char)(mima.charAt(i)+xiaoxiezimuyidongdeweishu);mima.setCharAt(i,A);}}//正向处理0~9位的密码private void culi3(int i) {char A;A=(char) (mima.charAt(i)+Cshuziyidongweishu);mima.setCharAt(i,A);if(mima.charAt(i)+shuziyidongweishu>(char)(57+Cshuziyidongweishu)){A=(char)(mima.charAt(i)+shuziyidongweishu-10);mima.setCharAt(i,A);}else{A=(char)(mima.charAt(i)+shuziyidongweishu);mima.setCharAt(i,A);}}//正向处理'.'和'_'private void culi4(int i){if(i%2==0){if(mima.charAt(i)=='.'){mima.setCharAt(i,weizhishu[0]);}else{mima.setCharAt(i,weizhishu[1]);}}else{if(mima.charAt(i)=='.'){mima.setCharAt(i,weizhishu[2]);}else{mima.setCharAt(i,weizhishu[3]);}}}//密码解密private void mimajiemi(){for(int i=0;i<mima.length();i++){culi5(i);}}//反向处理密码private void culi5(int i) {if(sss[i]==1){char A;if(mima.charAt(i)-daxiezimuyidongdeweishu<(char)(65+Cdaxiezimuyidongdeweishu)){A=(char) (mima.charAt(i)-daxiezimuyidongdeweishu+26);mima.setCharAt(i,A);}else{A=(char)(mima.charAt(i)-daxiezimuyidongdeweishu);mima.setCharAt(i,A);}A=(char)(mima.charAt(i)-Cdaxiezimuyidongdeweishu);mima.setCharAt(i,A);}elseif(sss[i]==2){char A;if(mima.charAt(i)-xiaoxiezimuyidongdeweishu<(char)(97+Cxiaoxiezimuyidongdeweishu)){A=(char) (mima.charAt(i)-xiaoxiezimuyidongdeweishu+26);mima.setCharAt(i,A);}else{A=(char)(mima.charAt(i)-xiaoxiezimuyidongdeweishu);mima.setCharAt(i,A);}A=(char) (mima.charAt(i)-Cxiaoxiezimuyidongdeweishu);mima.setCharAt(i,A);}elseif(sss[i]==3){char A;if(mima.charAt(i)-shuziyidongweishu<(char)(48+Cshuziyidongweishu)){A=(char) (mima.charAt(i)-shuziyidongweishu+10);mima.setCharAt(i,A);}else{A=(char)(mima.charAt(i)-shuziyidongweishu);mima.setCharAt(i,A);}A=(char)(mima.charAt(i)-Cshuziyidongweishu);mima.setCharAt(i,A);}else{if(i%2==0){if(mima.charAt(i)==weizhishu[0]){mima.setCharAt(i,'.');}else{mima.setCharAt(i,'_');}}else{if(mima.charAt(i)==weizhishu[2]){mima.setCharAt(i,'.');}else{mima.setCharAt(i,'_');}}}}//添加1private void tianjia1(StringBuilder B,int B1){B.append((char)B1);}//添加2private void tianjia2(StringBuilder B,int B1){B.append((char)(B1+1020200));}//总方法1void shuchumiyao() {Dengluxitong A=new Dengluxitong();A.setMima();A.mimajiami();StringBuilder B=A.getMima();int B1=A.getCshuziyidongweishu();int B2=A.getCdaxiezimuyidongdeweishu();int B3=A.getCxiaoxiezimuyidongdeweishu();int C1=A.getShuziyidongweishu();int C2=A.getDaxiezimuyidongdeweishu();int C3=A.getXiaoxiezimuyidongdeweishu();tianjia1(B,B1);tianjia1(B,B2);tianjia1(B,B3);tianjia2(B,C1);tianjia2(B,C2);tianjia2(B,C3);B.append(zhongyaoxinxi1[6]);int []C;C=A.getSss();char []D=new char[C.length];for(int i=0;i<D.length;i++){if(C[i]==0){D[i]=(char)(1020400);}elseif(C[i]==1){D[i]=(char)(1020403);}elseif(C[i]==2){D[i]=(char)(1020405);}elseif(C[i]==3){D[i]=(char)(1020407);}else{D[i]=(char)(1020409);}}B.append(D);String E=B.toString();System.out.println("输出的加密密码为:");for(int i=0;i<E.length();i++){System.out.print(E.charAt(i));}}//总方法2void shucuyuanma(){Scanner input=new Scanner(System.in);xiaoxiezimuyidongdeweishu=0;daxiezimuyidongdeweishu=0;shuziyidongweishu=0;Cxiaoxiezimuyidongdeweishu=0;Cdaxiezimuyidongdeweishu=0;Cshuziyidongweishu=0;System.out.println();System.out.println("请输入加密密码:");String A=input.next();int B=15;int S;for(S=A.length()-1;S>=0;S--){if(A.charAt(S)!=zhongyaoxinxi1[6]){if(A.charAt(S)==(char)(1020400)){sss[B]=0;B--;}elseif(A.charAt(S)==(char)(1020403)){sss[B]=1;B--;}elseif(A.charAt(S)==(char)(1020405)){sss[B]=2;B--;}elseif(A.charAt(S)==(char)(1020407)){sss[B]=3;B--;}elseif(A.charAt(S)==(char)(1020409)){sss[B]=4;B--;}}else{break;}}S--;xiaoxiezimuyidongdeweishu=A.charAt(S)-(char)1020200;S--;daxiezimuyidongdeweishu=A.charAt(S)-(char)1020200;S--;shuziyidongweishu=A.charAt(S)-(char)1020200;S--;Cxiaoxiezimuyidongdeweishu=A.charAt(S);S--;Cdaxiezimuyidongdeweishu=A.charAt(S);S--;Cshuziyidongweishu=A.charAt(S);int D=0;for(int i=0;i<16;i++){if(sss[i]==0){break;}else{D++;}}for(int i=D-1;i>=0;i--){mima.setCharAt(i,A.charAt(i));}mimajiemi();for(int i=0;i<D;i++){System.out.print(mima.charAt(i));}}
}

测试类

package helloworld;class DengluxitongTest {public static void main(String[] args) {Dengluxitong A=new Dengluxitong();A.shuchumiyao();A.shucuyuanma();}
}

密码加解密java语言实现相关推荐

  1. aes 256 cbc java,AES256加解密java语言实现

    AES256加解密java语言实现 写在前面 基于项目安全性需要,有时候我们的项目会使用AES 256加解密算法.以下,是针对实现AES256 Padding7加密算法实现的关键步骤解析以及此过程遇到 ...

  2. yml配置文件的密码加解密

    yml配置文件的密码加解密 1.低版本2.x 1)引入jar包 2)生成密码 3)测下解密 4)yml配置 2.高版本 3.x 1)引入jar包 2)生成密码 3)yml配置 1.低版本2.x 1)引 ...

  3. python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...

    #-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...

  4. 凯撒密码加密解密C语言详细代码

    凯撒密码加密解密C语言详细代码 凯撒密码 又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod ...

  5. 凯撒密码加密解密——Java代码(密码学)

    凯撒密码加密解密--Java代码(密码学) 凯撒密码: 恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文 ...

  6. 仿射密码python_仿射密码加解密 python

    参数选取:模数n=26+10=36,k2为学号后2位:k1为与学号后2位最近的素数. 加解密:加密自己名字的全拼,再解密. 密钥 k = (k1 , k2) 仿射密码加解密算法是:    m:是输入的 ...

  7. java仿射密码加解密实现,仿射密码-Affine cipher

    [实例简介] 题目:课程设计 环境:Visual C++ 6.0 仿射密码是由加法密码和乘法密码结合就构成. 仿射密码的加密和解密算法是: C= Ek(m)=(k1m+k2) mod n M= Dk( ...

  8. AES实现加解密-Java

    一.加解密算法生态圈 目前的数据加密技术根据加密密钥类型可分私钥加密(对称加密)系统和公钥加密(非对称加密)系统.对称加密算法是较传统的加密体制,通信双方在加/解密过程中使用他们共享的单一密钥,鉴于其 ...

  9. Druid之——连接池自定义数据库密码加解密的实现

    转载请注明出处:https://blog.csdn.net/l1028386804/article/details/79920338 Druid是阿里巴巴开发的一款数据库连接池,它支持对数据库密码的加 ...

最新文章

  1. 我国人工智能五大开放创新平台集体亮相
  2. Ionic 2 Beta 11 升级 RC 0 的坑 (update: RC 1 已经出来了,稍微没那么坑一点点)
  3. easyui-window窗口不遮挡_眼睛是心灵的窗口、佩戴舒适又时尚的米家防蓝光护目镜 Pro...
  4. win7的python3.5安装numpy包
  5. 滑动翻页效果_Flutter实现3D效果,一个字,炫!
  6. 字符集_一文搞清楚unicode字符集的三种实现方式
  7. 蚂蚁金服技术专家:mPaaS是如何打造“最懂用户”的App的?
  8. TeamTalk源码分析(一)—— TeamTalk介绍
  9. MAX30102+usb转串口+树莓派
  10. Win7 配置 Git 客户端 图文详解
  11. 饥荒控制台输入没用_《饥荒》控制台正确使用教程 如何使用控制台
  12. 如何在eclipse配置服务器server (java ee)
  13. 我的世界rpg服务器背包位置,我的世界查看玩家背包方法 如何查看玩家背包
  14. PS如何制作圆角矩形图片
  15. React 16.8.6 版本存在内存泄露
  16. secureCRT是什么
  17. 马丁福勒微服务论文网址
  18. rs485数据线接反_数据信号TXD、RXD 发送和接受怎么区分正负极呢? 现在数据信号TXD、RXD需接RS485+ RS485-信号该怎么接呢...
  19. 如何使用cookie信息,完成自动登录
  20. 配置Haproxy + Keepalived +PXC 5.7

热门文章

  1. 火狐侧边栏_快速提示:在Firefox中使用Google Talk边栏
  2. win10 如何锁定计算机,win10系统创建一键锁定计算机的快捷方式的操作方法
  3. 职业规划:兴趣不是挡箭牌,关键是要找到你的成就动机
  4. 详解企业财务数字化转型路径|推荐收藏
  5. 高并发缓存队列防止溢出解决方案
  6. 【python】龟兔赛跑
  7. Ubuntu VLC 播放器播放本机h264码流
  8. Rake简介及如何自定义Rake任务(rake task)
  9. python网络爬虫实验报告_Python网络爬虫实例讲解
  10. java 熔断机制_Hystrix Command执行以及熔断机制整理