密码加解密java语言实现

news/2024/11/8 3:04:14/

目录

前言

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();}
}


http://www.ppmy.cn/news/839563.html

相关文章

数据库密码加解密

为符合数据安全&#xff0c;针对数据库密码进行加密以防止数据库密码明文展示而引发的安全隐患。 一、数据库密码加密&#xff1a; 加密Jar包&#xff1a; 数据库密码加密Jar包-Java文档类资源-CSDN下载 使用详解&#xff08;环境为JDK1.7&#xff09;&#xff1a; 1.通过…

密码学解密网站汇总

密码学解密网站汇总 0x00.综合 网站中包含大多编码的解码。http://web2hack.org/xssee/https://www.sojson.com/http://web.chacuo.net/ 0x01.文字倒序排列 http://www.qqxiuzi.cn/zh/daoxu/ 0x02.cmd5解密 http://www.cmd5.com/http://pmd5.com/http://tool.chinaz.com/Tools/…

密码的解密

题目描述 某网站为了安全起见&#xff0c;将用户的密码采用加密的形式存储。但是一旦用户忘记密码&#xff0c;需要解密程序还原用户的密码。&#xff08;1&#xff09;密码由8个英文字母组成。&#xff08;2&#xff09;解密规则为&#xff1a;①第1、4、7个字符的ASCII码1&a…

AES加解密之C++实现

一、AES介绍 AES&#xff0c;高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥&#xff0c;具体的加密流程如下图&#xff1a; 下面简单介绍下各个部分的作用与意义…

大字符串替换

在业务中&#xff0c;字符串格式化处理比较常见&#xff0c;替换也是个很常见的操作。 最近遇到个问题&#xff0c;在处理字符串替换过程中&#xff0c;遇到了out of memory错误。 string text; Dictionary<string, string> dic; foreach (var key in dic.Kesy) {text …

公司监控显示无网络连接服务器,监控显示无网络视频什么原因

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 监控显示无网络视频的原因有&#xff1a;接口接触不良&#xff1b;监视器出现故障&#xff1b;产品不合格&#xff1b;由于电压不稳摄像头被烧坏&#xff1b;设备连接错误&#xff…

安防视频流媒体服务器EasyNVR接入摄像头配置通道显示空白怎么处理?

大家知道我们的流媒体平台EasyNVR能够接入RTSP摄像头&#xff0c;进行网页无插件的视频监控&#xff0c;支持PC/安卓/iOS等主流终端&#xff0c;配置过程也易上手&#xff0c;操作简单。 我们的平台兼容多种浏览器&#xff0c;一般在浏览器内进行配置不会出现不兼容的情况&…

海康大华摄像头接入国标流媒体平台显示设备离线问题解决

发展目标 GB28181协议是由公安部牵头实现的安防行业统一的设备接入、流媒体传输的协议。 国标流媒体解决方案是专门用于接入国标设备的视频解决方案&#xff0c;不但从设备接入层面上&#xff0c;接入了内网或者公网的国标设备&#xff0c;而且在输出层面上&#xff0c;采用了…