1 / 9
文档名称:

md5加密解密.docx

格式:docx   大小:15KB   页数:9页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

md5加密解密.docx

上传人:鼠标 2023/5/4 文件大小:15 KB

下载得到文件列表

md5加密解密.docx

相关文档

文档介绍

文档介绍:该【md5加密解密】是由【鼠标】上传分享,文档一共【9】页,该文档可以免费在线阅读,需要了解更多关于【md5加密解密】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。.*;.*;.*;.*;.*;.*;.*;/**文件名:::文件加密加密方法:三重DES加密加密过程:对选中的文件加密后在同文件夹下生成一个增加了".tdes"扩展名的加密文件解密过程:对选中的加密文件(必须有".tdes"扩展名)进行解密*/lassFileEncrypterextendsJFrame{publicstaticfinalintWIDTH=550;publicstaticfinalintHEIGHT=200;publicstaticvoidmain(Stringargs[]){FileEncrypterfe=newFileEncrypter();();}FileEncrypter(){(WIDTH,HEIGHT);();(false);Toolkittk=();DimensionscreenSize=();((-WIDTH)/2,(-HEIGHT)/2);("文件加密器(TriDES)");Containerc=();(newFlowLayout());finalFilePanelfp=newFilePanel("文件选择");(fp);finalKeyPanelpp=newKeyPanel("密码");(pp);JButtonjbE=newJButton("加密");(jbE);(newActionListener(){publicvoidactionPerformed(ActionEventevent){Filefile=newFile(());if(())encrypt((),());(null,"请选择文件!","提示",);}});JButtonjbD=newJButton("解密");(jbD);(newActionListener(){publicvoidactionPerformed(ActionEventevent){Filefile=newFile(());if(())decrypt((),());(null,"请选择文件!","提示",);}});}/**加密函数输入:要加密的文件,密码(由0-F组成,共48个字符,表示3个8位的密码)如:AD67EA2F3BE6E5ADD368DFE03120B5DF92A8FD8FEC2F0746其中:AD67EA2F3BE6E5ADDES密码一D368DFE03120B5DFDES密码二92A8FD8FEC2F0746DES密码三输出:对输入的文件加密后,保存到同一文件夹下增加了".tdes"扩展名的文件中。*/privatevoidencrypt(FilefileIn,StringsKey){try{if(()==48){byte[]bytK1=getKeyByStr((0,16));byte[]bytK2=getKeyByStr((16,32));byte[]bytK3=getKeyByStr((32,48));FileInputStreamfis=newFileInputStream(fileIn);byte[]bytIn=newbyte[(int)()];for(inti=0;i<();i++){bytIn[i]=(byte)();}//加密byte[]bytOut=encryptByDES(encryptByDES(encryptByDES(bytIn,bytK1),bytK2),bytK3);StringfileOut=()+".tdes";FileOutputStreamfos=newFileOutputStream(fileOut);for(inti=0;i<;i++){((int)bytOut[i]);}();(this,"加密成功!","提示",);}(this,"密码长度必须等于48!","错误信息",);}catch(Exceptione){();}}/**解密函数输入:要解密的文件,密码(由0-F组成,共48个字符,表示3个8位的密码)如:AD67EA2F3BE6E5ADD368DFE03120B5DF92A8FD8FEC2F0746其中:AD67EA2F3BE6E5ADDES密码一D368DFE03120B5DFDES密码二92A8FD8FEC2F0746DES密码三输出:对输入的文件解密后,保存到用户指定的文件中。*/privatevoiddecrypt(FilefileIn,StringsKey){try{if(()==48){StringstrPath=();if((()-5).toLowerCase().equals(".tdes"))strPath=(0,()-5);else{(this,"不是合法的加密文件!","提示",);return;}JFileChooserchooser=newJFileChooser();(newFile("."));(newFile(strPath));//用户指定要保存的文件intret=(this);if(ret==){byte[]bytK1=getKeyByStr((0,16));byte[]bytK2=getKeyByStr((16,32));byte[]bytK3=getKeyByStr((32,48));FileInputStreamfis=newFileInputStream(fileIn);byte[]bytIn=newbyte[(int)()];for(inti=0;i<();i++){bytIn[i]=(byte)();}//解密byte[]bytOut=decryptByDES(decryptByDES(decryptByDES(bytIn,bytK3),bytK2),bytK1);FilefileOut=();();FileOutputStreamfos=newFileOutputStream(fileOut);for(inti=0;i<;i++){((int)bytOut[i]);}();(this,"解密成功!","提示",);}}(this,"密码长度必须等于48!","错误信息",);}catch(Exceptione){(this,"解密失败,请核对密码!","提示",);}}/**用DES方法加密输入的字节bytKey需为8字节长,是加密的密码*/privatebyte[]encryptByDES(byte[]bytP,byte[]bytKey)throwsException{DESKeySpecdesKS=newDESKeySpec(bytKey);SecretKeyFactoryskf=("DES");SecretKeysk=(desKS);Ciphercip=("DES");(,sk);(bytP);}/**用DES方法解密输入的字节bytKey需为8字节长,是解密的密码*/privatebyte[]decryptByDES(byte[]bytE,byte[]bytKey)throwsException{DESKeySpecdesKS=newDESKeySpec(bytKey);SecretKeyFactoryskf=("DES");SecretKeysk=(desKS);Ciphercip=("DES");(,sk);(bytE);}/**输入密码的字符形式,返回字节数组形式。如输入字符串:AD67EA2F3BE6E5AD返回字节数组:{173,103,234,47,59,230,229,173}*/privatebyte[]getKeyByStr(Stringstr){byte[]bRet=newbyte[()/2];for(inti=0;i<()/2;i++){Integeritg=newInteger(16*getChrInt((2*i))+getChrInt((2*i+1)));bRet[i]=();}returnbRet;}/**计算一个16进制字符的10进制值输入:0-F*/privateintgetChrInt(charchr){intiRet=0;if(chr=="0".charAt(0))iRet=0;if(chr=="1".charAt(0))iRet=1;if(chr=="2".charAt(0))iRet=2;if(chr=="3".charAt(0))iRet=3;if(chr=="4".charAt(0))iRet=4;if(chr=="5".charAt(0))iRet=5;if(chr=="6".charAt(0))iRet=6;if(chr=="7".charAt(0))iRet=7;if(chr=="8".charAt(0))iRet=8;if(chr=="9".charAt(0))iRet=9;if(chr=="A".charAt(0))iRet=10;if(chr=="B".charAt(0))iRet=11;if(chr=="C".charAt(0))iRet=12;if(chr=="D".charAt(0))iRet=13;if(chr=="E".charAt(0))iRet=14;if(chr=="F".charAt(0))iRet=15;returniRet;}}/**文件选择组件。*/classFilePanelextendsJPanel{FilePanel(Stringstr){JLabellabel=newJLabel(str);JTextFieldfileText=newJTextField(35);JButtonchooseButton=newJButton("浏览...");(label);(fileText);(chooseButton);clickActionca=newclickAction(this);(ca);}publicStringgetFileName(){JTextFieldjtf=(JTextField)(1);();}privateclassclickActionimplementsActionListener{ponentc){cmpt=c;}publicvoidactionPerformed(ActionEventevent){JFileChooserchooser=newJFileChooser();(newFile("."));intret=(cmpt);if(ret==){JPaneljp=(JPanel)cmpt;JTextFieldjtf=(JTextField)(1);(().getPath());}}ponentcmpt;}}/**密码生成组件。*/classKeyPanelextendsJPanel{KeyPanel(Stringstr){JLabellabel=newJLabel(str);JTextFieldfileText=newJTextField(35);JButtonchooseButton=newJButton("随机产生");(label);(fileText);(chooseButton);clickActionca=newclickAction(this);(ca);}//返回生成的密码(48个字符长度)publicStringgetKey(){JTextFieldjtf=(JTextField)(1);();}privateclassclickActionimplementsActionListener{ponentc){cmpt=c;}publicvoidactionPerformed(ActionEventevent){try{KeyGeneratorkg=("DES");(56);Keyke=();byte[]bytK1=();ke=();byte[]bytK2=();ke=();byte[]bytK3=();JPaneljp=(JPanel)cmpt;JTextFieldjtf=(JTextField)(1);(getByteStr(bytK1)+getByteStr(bytK2)+getByteStr(bytK3));}catch(Exceptione){();}}privateStringgetByteStr(byte[]byt){StringstrRet="";for(inti=0;i<;i++){//(byt[i]);strRet+=getHexValue((byt[i]&240)/16);strRet+=getHexValue(byt[i]&15);}returnstrRet;}privateStringgetHexValue(ints){StringsRet=null;switch(s){case0:sRet="0";break;case1:sRet="1";break;case2:sRet="2";break;case3:sRet="3";break;case4:sRet="4";break;case5:sRet="5";break;case6:sRet="6";break;case7:sRet="7";break;case8:sRet="8";break;case9:sRet="9";break;case10:sRet="A";break;case11:sRet="B";break;case12:sRet="C";break;case13:sRet="D";break;case14:sRet="E";break;case15:sRet="F";}returnsRet;}ponentcmpt;}}