2024年10月md5解密java代码(java中,从数据库取出来的密码加密了,用代码怎么实现md5解密)

 更新时间:2024-10-12

  ⑴md解密java代码(java中,从数据库取出来的密码加密了,用代码怎么实现md解密

  ⑵java中,从数据库取出来的密码加密了,用代码怎么实现md解密

  ⑶md是不可逆的,只不过用的人多了,就有人创建了一个md密码表,应该就是传说中的彩虹表,蜜要是有这个表就可以了

  ⑷java加密解密代码

  ⑸package.cube.limail.util;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;/***加密解密类*/publilassEryptogram{privatestaticStringAlgorithm=“DES“;privateStringkey=“CBAED“;//定义加密算法,可用DES,DESede,Blowfishstaticbooleandebug=false;/***构造子注解.*/publicEryptogram(){}/***生成密钥*returnbyte返回生成的密钥*throwsexception扔出异常.*/publicstaticbytegetSecretKey()throwsException{KeyGeneratorkeygen=KeyGenerator.getInstance(Algorithm);SecretKeydeskey=keygen.generateKey();System.out.println(“生成密钥:“+bytesToHexString(deskey.getEncoded()));if(debug)System.out.println(“生成密钥:“+bytesToHexString(deskey.getEncoded()));returndeskey.getEncoded();}/***将指定的数据根据提供的密钥进行加密*paraminput需要加密的数据*paramkey密钥*returnbyte加密后的数据*throwsException*/publicstaticbytekey)throwsException{SecretKeydeskey=newjavax.crypto.spec.SecretKeySpec(key,Algorithm);if(debug){System.out.println(“加密前的二进串:“+bytehex(input));System.out.println(“加密前的字符串:“+newString(input));}Cipherc=Cipher.getInstance(Algorithm);c.init(Cipher.ENCRYPT_MODE,deskey);bytecipherByte=c.doFinal(input);if(debug)System.out.println(“加密后的二进串:“+bytehex(cipherByte));returncipherByte;}/***将给定的已加密的数据通过指定的密钥进行解密*paraminput待解密的数据*paramkey密钥*returnbyte解密后的数据*throwsException*/publicstaticbytekey)throwsException{SecretKeydeskey=newjavax.crypto.spec.SecretKeySpec(key,Algorithm);if(debug)System.out.println(“解密前的信息:“+bytehex(input));Cipherc=Cipher.getInstance(Algorithm);c.init(Cipher.DECRYPT_MODE,deskey);byteclearByte=c.doFinal(input);if(debug){System.out.println(“解密后的二进串:“+bytehex(clearByte));System.out.println(“解密后的字符串:“+(newString(clearByte)));}returnclearByte;}/***字节码转换成进制字符串*parambyteb输入要转换的字节码*returnString返回转换后的进制字符串*/publicstaticStringbytehex(byteb){Stringhs=““;Stringstmp=““;for(intn=;n《b.length;n++){stmp=(java.lang.Integer.toHexString(b&XFF));if(stmp.length()==)hs=hs+““+stmp;elsehs=hs+stmp;if(n《b.length-)hs=hs+“:“;}returnhs.toUpperCase();}/***字符串转成字节数组.*paramhex要转化的字符串.*returnbyte返回转化后的字符串.*/publicstaticbytehexStringToByte(Stringhex){intlen=(hex.length()/);byte;charachar=hex.toCharArray();for(inti=;i《len;i++){intpos=i*;result));}returnresult;}privatestaticbytetoByte(charc){byteb=(byte)“ABCDEF“.indexOf(c);returnb;}/***字节数组转成字符串.*paramString要转化的字符串.*return返回转化后的字节数组.*/publicstaticfinalStringbytesToHexString(bytebArray){StringBuffersb=newStringBuffer(bArray.length);StringsTemp;for(inti=;i《bArray.length;i++){sTemp=Integer.toHexString(xFF&bArray);if(sTemp.length()《)sb.append();sb.append(sTemp.toUpperCase());}returnsb.toString();}/***从数据库中获取密钥.*paramdeptid企业id.*return要返回的字节数组.*throwsException可能抛出的异常.*/publicstaticbytegetSecretKey(longdeptid)throwsException{bytekey=null;Stringvalue=null;//mDaodao=newmDao();//Listlist=dao.getRecordList(“fromKeykwherek.deptid=“+deptid);//if(list.size()》){//value=((.csc.sale.bean.Key)list.get()).getKey();value=“CBAED“;key=hexStringToByte(value);//}if(debug)System.out.println(“密钥:“+value);returnkey;}publicStringencryptData(Stringdata){Stringen=null;try{bytekey=hexStringToByte(this.key);en=bytesToHexString(encryptData(data.getBytes(),key));}catch(Exceptione){e.printStackTrace();}returnen;}publicStringdecryptData(Stringdata){Stringde=null;try{bytekey=hexStringToByte(this.key);de=newString(decryptData(hexStringToByte(data),key));}catch(Exceptione){e.printStackTrace();}returnde;}}加密使用:bytekey=Eryptogram.getSecretKey(deptid);//获得钥匙(字节数组bytetmp=Eryptogram.encryptData(password.getBytes(),key);//传入密码和钥匙,获得加密后的字节数组的密码password=Eryptogram.bytesToHexString(tmp);//将字节数组转化为字符串,获得加密后的字符串密码解密与之差不多

  ⑹JavaMD如何解密

  ⑺MD是单向加密的,不管何种数据进行MD加密都会得到固定长度的字符串,MD一般用户文件完整性的校验,也有用来做密码加密的。想要破解MD,因其本身的算法不可逆,故只能使用穷举法,也就是不断拼字符串加密和已知的MD字符串进行比对,这是一个相当大的工程,需要庞大的数据基础。

  ⑻如何在java中实现md加密和解密

  ⑼packageendecrypt;..importjava.io.UnsupportedEncodingException;.importjava.security.MessageDigest;.importjava.security.NoSuchAlgorithmException;.采用MD加密解密.*authortfq.*datetime--.*/.publilassMDUtil{../***.*MD加码生成位md码.*/.publicstaticStringstringMD(StringinStr){.MessageDigestmd=null;.try{.md=MessageDigest.getInstance(“MD“);.}catch(Exceptione){.System.out.println(e.toString());.e.printStackTrace();.return““;.}.charcharArray=inStr.toCharArray();.byte;..for(inti=;i《charArray.length;i++).byteArray;.bytemdBytes=md.digest(byteArray);.StringBufferhexValue=newStringBuffer();.for(inti=;i《mdBytes.length;i++){.intval=((int)mdBytes)&xff;.if(val《).hexValue.append(““);.hexValue.append(Integer.toHexString(val));.}.returnhexValue.toString();..}../**.*加密解密算法执行一次加密,两次解密.*/.publicstaticStringconvertMD(StringinStr){..chara=inStr.toCharArray();.for(inti=;i《a.length;i++){.a^’t’);.}.Strings=newString(a);.returns;..}

  ⑽JSPMD加密解密问题

  ⑾package.asset.core.util;/***MD加密处理类*author杨柯*version.*/importjava.lang.reflect.*;/*************************************************md类实现了RSADataSecurity,Inc.在提交给IETF的RFC中的MDmessage-digest算法。*************************************************/publilassMD{/*下面这些S-S实际上是一个*的矩阵,在原始的C实现中是用#define实现的,这里把它们实现成为staticfinal是表示了只读,切能在同一个进程空间内的多个Instance间共享*/staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalintS=;staticfinalbytePADDING={-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,};/*下面的三个成员是MD计算过程中用到的个核心数据,在原始的C实现中被定义到MD_CTX结构中*/privatelong;//state(ABCD)privatelong;//numberofbits,modulo^(lsbfirst)privatebyte;//inputbuffer/*digestHexStr是MD的唯一一个公共成员,是最新一次计算结果的进制ASCII表示.*/publicStringdigestHexStr;/*digest,是最新一次计算结果的进制内部表示,表示bit的MD值.*/privatebyte;/*getMDofStr是类MD最主要的公共方法,入口参数是你想要进行MD变换的字符串返回的是变换完的结果,这个结果是从公共成员digestHexStr取得的.*/publicStringgetMDofStr(Stringinbuf){mdInit();mdUpdate(inbuf.getBytes(),inbuf.length());mdFinal();digestHexStr=““;for(inti=;i《;i++){digestHexStr+=byteHEX(digest);}returndigestHexStr.substring(,);}//这是MD这个类的标准构造函数,JavaBean要求有一个public的并且没有参数的构造函数??privateMD(){mdInit();return;}privatestaticMDmd=newMD();publicstaticMDgetInstance(){returnMD.md;}/*mdInit是一个初始化函数,初始化核心变量,装入标准的幻数*/privatevoidmdInit(){count=L;count=L;///*Loadmagicinitializationconstants.state=xL;state=xefcdabL;state=xbadcfeL;state=xL;return;}/*F,G,H,I是个基本的MD函数,在原始的MD的C实现中,由于它们是简单的位运算,可能出于效率的考虑把它们实现成了宏,在java中,我们把它们实现成了private方法,名字保持了原来C中的。*/privatelongF(longx,longy,longz){return(x&y)|((~x)&z);}privatelongG(longx,longy,longz){return(x&z)|(y&(~z));}privatelongH(longx,longy,longz){returnx^y^z;}privatelongI(longx,longy,longz){returny^(x|(~z));}/*FF,GG,HH和II将调用F,G,H,I进行近一步变换FF,GG,HH,andIItransformationsforrounds,,,and.Rotationisseparatefromadditiontopreventreputation.*/privatelongFF(longa,longb,longc,longd,longx,longs,longac){a+=F(b,c,d)+x+ac;a=((int)a《《s)|((int)a》》》(-s));a+=b;returna;}privatelongGG(longa,longb,longc,longd,longx,longs,longac){a+=G(b,c,d)+x+ac;a=((int)a《《s)|((int)a》》》(-s));a+=b;returna;}privatelongHH(longa,longb,longc,longd,longx,longs,longac){a+=H(b,c,d)+x+ac;a=((int)a《《s)|((int)a》》》(-s));a+=b;returna;}privatelongII(longa,longb,longc,longd,longx,longs,longac){a+=I(b,c,d)+x+ac;a=((int)a《《s)|((int)a》》》(-s));a+=b;returna;}/*mdUpdate是MD的主计算过程,inbuf是要变换的字节串,inputlen是长度,这个函数由getMDofStr调用,调用之前需要调用mdinit,因此把它设计成private的*/privatevoidmdUpdate(byteinbuf,intinputLen){inti,index,partLen;byte;index=(int)(count》》》)&xF;///*Updatenumberofbits*/if((count+=(inputLen《《))《(inputLen《《))count++;count+=(inputLen》》》);partLen=-index;//Transformasmanytimesaspossible.if(inputLen》=partLen){mdMemcpy(buffer,inbuf,index,,partLen);mdTransform(buffer);for(i=partLen;i+《inputLen;i+=){mdMemcpy(block,inbuf,,i,);mdTransform(block);}index=;}elsei=;///*Bufferremaininginput*/mdMemcpy(buffer,inbuf,index,i,inputLen-i);}/*mdFinal整理和填写输出结果*/privatevoidmdFinal(){byte;intindex,padLen;///*Savenumberofbits*/Encode(bits,count,);///*Padouttomod.index=(int)(count》》》)&xf;padLen=(index《)?(-index):(-index);mdUpdate(PADDING,padLen);///*Appendlength(beforepadding)*/mdUpdate(bits,);///*Storestateindigest*/Encode(digest,state,);}/*mdMemcpy是一个内部使用的byte数组的块拷贝函数,从input的inpos开始把len长度的字节拷贝到output的outpos位置开始*/privatevoidmdMemcpy(byteinput,intoutpos,intinpos,intlen){inti;for(i=;i《len;i++)output;}/*mdTransform是MD核心变换程序,有mdUpdate调用,block是分块的原始字节*/privatevoidmdTransform(byteblock){longa=state;long;Decode(x,block,);/*Round*/a=FF(a,b,c,d,x,S,xdaaL);/**/d=FF(d,a,b,c,x,S,xecbL);/**/c=FF(c,d,a,b,x,S,xdbL);/**/b=FF(b,c,d,a,x,S,xcbdceeeL);/**/a=FF(a,b,c,d,x,S,xfcfafL);/**/d=FF(d,a,b,c,x,S,xcaL);/**/c=FF(c,d,a,b,x,S,xaL);/**/b=FF(b,c,d,a,x,S,xfdL);/**/a=FF(a,b,c,d,x,S,xdL);/**/d=FF(d,a,b,c,x,S,xbfafL);/**/c=FF(c,d,a,b,x,S,xffffbbL);/**/b=FF(b,c,d,a,x,S,xcdbeL);/**/a=FF(a,b,c,d,x,S,xbL);/**/d=FF(d,a,b,c,x,S,xfdL);/**/c=FF(c,d,a,b,x,S,xaeL);/**/b=FF(b,c,d,a,x,S,xbL);/**//*Round*/a=GG(a,b,c,d,x,S,xfeL);/**/d=GG(d,a,b,c,x,S,xcbL);/**/c=GG(c,d,a,b,x,S,xeaL);/**/b=GG(b,c,d,a,x,S,xebcaaL);/**/a=GG(a,b,c,d,x,S,xdfdL);/**/d=GG(d,a,b,c,x,S,xL);/**/c=GG(c,d,a,b,x,S,xdaeL);/**/b=GG(b,c,d,a,x,S,xedfbcL);/**/a=GG(a,b,c,d,x,S,xecdeL);/**/d=GG(d,a,b,c,x,S,xcdL);/**/c=GG(c,d,a,b,x,S,xfddL);/**/b=GG(b,c,d,a,x,S,xaedL);/**/a=GG(a,b,c,d,x,S,xaeeL);/**/d=GG(d,a,b,c,x,S,xfcefafL);/**/c=GG(c,d,a,b,x,S,xfdL);/**/b=GG(b,c,d,a,x,S,xdacaL);/**//*Round*/a=HH(a,b,c,d,x,S,xfffaL);/**/d=HH(d,a,b,c,x,S,xfL);/**/c=HH(c,d,a,b,x,S,xddL);/**/b=HH(b,c,d,a,x,S,xfdecL);/**/a=HH(a,b,c,d,x,S,xabeeaL);/**/d=HH(d,a,b,c,x,S,xbdecfaL);/**/c=HH(c,d,a,b,x,S,xfbbbL);/**/b=HH(b,c,d,a,x,S,xbebfbcL);/**/a=HH(a,b,c,d,x,S,xbecL);/**/d=HH(d,a,b,c,x,S,xeaafaL);/**/c=HH(c,d,a,b,x,S,xdefL);/**/b=HH(b,c,d,a,x,S,xdL);/**/a=HH(a,b,c,d,x,S,xdddL);/**/d=HH(d,a,b,c,x,S,xedbeL);/**/c=HH(c,d,a,b,x,S,xfacfL);/**/b=HH(b,c,d,a,x,S,xcacL);/**//*Round*/a=II(a,b,c,d,x,S,xfL);/**/d=II(d,a,b,c,x,S,xaffL);/**/c=II(c,d,a,b,x,S,xabaL);/**/b=II(b,c,d,a,x,S,xfcaL);/**/a=II(a,b,c,d,x,S,xbcL);/**/d=II(d,a,b,c,x,S,xfcL);/**/c=II(c,d,a,b,x,S,xffeffdL);/**/b=II(b,c,d,a,x,S,xddL);/**/a=II(a,b,c,d,x,S,xfaefL);/**/d=II(d,a,b,c,x,S,xfeceeL);/**/c=II(c,d,a,b,x,S,xaL);/**/b=II(b,c,d,a,x,S,xeaL);/**/a=II(a,b,c,d,x,S,xfeL);/**/d=II(d,a,b,c,x,S,xbdafL);/**/c=II(c,d,a,b,x,S,xaddbbL);/**/b=II(b,c,d,a,x,S,xebdL);/**/state+=a;state+=b;state+=c;state+=d;}/*Encode把long数组按顺序拆成byte数组,因为java的long类型是bit的,只拆低bit,以适应原始C实现的用途*/privatevoidEncode(byteinput,intlen){inti,j;for(i=,j=;j《len;i++,j+=){output&xffL);output》》》)&xffL);output》》》)&xffL);output》》》)&xffL);}}/*Decode把byte数组按顺序合成成long数组,因为java的long类型是bit的,只合成低bit,高bit清零,以适应原始C实现的用途*/privatevoidDecode(longinput,intlen){inti,j;for(i=,j=;j《len;i++,j+=)output)|(biu(input)《《)|(biu(input)《《)|(biu(input)《《);return;}/*biu是我写的一个把byte按照不考虑正负号的原则的"升位"程序,因为java没有unsigned运算*/publicstaticlongbiu(byteb){returnb《?b&xF+:b;}/*byteHEX(),用来把一个byte类型的数转换成十六进制的ASCII表示,因为java中的byte的toString无法实现这一点,我们又没有C语言中的sprintf(outbuf,“%X“,ib)*/publicstaticStringbyteHEX(byteib){charDigit={’’,’’,’’,’’,’’,’’,’’,’’,’’,’’,’A’,’B’,’C’,’D’,’E’,’F’};char;ob;ob;Strings=newString(ob);returns;}publicstaticvoidmain(Stringargs){MDm=newMD();if(Array.getLength(args)==){//如果没有参数,执行标准的TestSuite??б????TestSuiteSystem.out.println(“MDTestsuite:“);System.out.println(“MD(““):“+m.getMDofStr(““));System.out.println(“admin:“+m.getMDofStr(“admin“));System.out.println(“MD(“a“):“+m.getMDofStr(“a“));System.out.println(“MD(“abc“):“+m.getMDofStr(“abc“));System.out.println(“MD(“messagedigest“):“+m.getMDofStr(“messagedigest“));System.out.println(“MD(“abcdefghijklmnopqrstuvwxyz“):“+m.getMDofStr(“abcdefghijklmnopqrstuvwxyz“));System.out.println(“MD(“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz“):“+m.getMDofStr(“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz“));}elseSystem.out.println(“MD(“+args));}}

  ⑿md加密后javascript怎么解密

  ⒀无法解密,md的特性就是只能加密,所以用md加密的时候,一定要记住你填写的内容,否则只能用重置的办法才能解决忘记的问题了。

  ⒁百度”站长工具“,点击打开。

  ⒂然后点击导航里的”代码转换工具“,选择”MD加密“。

  ⒃然后输入欲加密的字符串,选择多少位,然后点击“加密”即可。

  ⒄求java加密源代码(MD,base

  ⒅importjava.security.*;importjavax.crypto.*;/***本例解释如何利用DES私钥加密算法加解密**authorDevon*version.//*/publilassSingleKeyExample{publicstaticvoidmain(Stringargs){try{Stringalgorithm=“DES“;//定义加密算法,可用DES,DESede,BlowfishStringmessage=“HelloWorld.这是待加密的信息“;//生成个DES密钥KeyGeneratorkeyGenerator=KeyGenerator.getInstance(algorithm);keyGenerator.init();//选择DES算法,密钥长度必须为位Keykey=keyGenerator.generateKey();//生成密钥//生成Cipher对象Ciphercipher=Cipher.getInstance(“DES“);//用密钥加密明文(message),生成密文(cipherText)cipher.init(Cipher.ENCRYPT_MODE,key);//操作模式为加密(Cipher.ENCRYPT_MODE),key为密钥bytecipherText=cipher.doFinal(message.getBytes());//得到加密后的字节数组System.out.println(“加密后的信息:“+newString(cipherText));//用密钥加密明文(plainText),生成密文(cipherByte)cipher.init(Cipher.DECRYPT_MODE,key);//操作模式为解密,key为密钥bytesourceText=cipher.doFinal(cipherText);//获得解密后字节数组System.out.println(“解密后的信息:“+newString(sourceText));}catch(Exceptionex){ex.printStackTrace();}}}/***authorDevon*/importjava.security.*;importjava.security.spec.*;importjavax.crypto.*;publilassPairKeyExample{publicstaticvoidmain(Stringargv){try{Stringalgorithm=“RSA“;//定义加密算法,可用DES,DESede,BlowfishStringmessage=“张三,你好,我是李四“;//产生张三的密钥对(keyPairZhang)KeyPairGeneratorkeyGeneratorZhang=KeyPairGenerator.getInstance(algorithm);//指定采用的算法keyGeneratorZhang.initialize();//指定密钥长度为位KeyPairkeyPairZhang=keyGeneratorZhang.generateKeyPair();//产生密钥对System.out.println(“生成张三的公钥对“);//张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节bytepublicKeyZhangEncode=keyPairZhang.getPublic().getEncoded();//通过网络或磁盘等方式,把公钥编码传送给李四//李四接收到张三编码后的公钥,将其解码KeyFactorykeyFacoryLi=KeyFactory.getInstance(algorithm);//得到KeyFactory对象XEncodedKeySpecxKeySpec=newXEncodedKeySpec(publicKeyZhangEncode);//公钥采用X.编码PublicKeypublicKeyZhang=keyFacoryLi.generatePublic(xKeySpec);//将公钥的KeySpec对象转换为公钥System.out.println(“李四成功解码,得到张三的公钥“);//李四用张三的公钥加密信息,并发送给李四Ciphercipher=Cipher.getInstance(“RSA/ECB/PKCSPadding“);//得到Cipher对象cipher.init(Cipher.ENCRYPT_MODE,publicKeyZhang);//用张三的公钥初始化Cipher对象bytecipherMessage=cipher.doFinal(message.getBytes());//得到加密信息System.out.println(“加密后信息:“+newString(cipherMessage));System.out.println(“加密完成,发送给李四...“);//张三用自己的私钥解密从李四处收到的信息cipher.init(Cipher.DECRYPT_MODE,keyPairZhang.getPrivate());//张三用其私钥初始化Cipher对象byteoriginalMessage=cipher.doFinal(cipherMessage);//得到解密后信息System.out.println(“张三收到信息,解密后为:“+newString(originalMessage));}catch(Exceptionex){ex.printStackTrace();}}}

  ⒆java中如何进行md加密

  ⒇JDK里面有一个java.security.MessageDigest类,这个类就是用来加密的。

  ⒈String?token?=?System.currentTimeMillis()+new?Random().nextInt()+““;try?{MessageDigest?md?=?MessageDigest.getInstance(“MD“);byte?md?=?md.digest(token.getBytes());}?catch?(Exception?e)?{throw?new?RuntimeException(e);}

  ⒉这个byte类型的数组就是使用MD加密后的结果

  ⒊java如何采用md解密

  ⒋packageendecrypt;importjava.io.UnsupportedEncodingException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;/***采用MD加密解密*authortfq*datetime--*/publilassMDUtil{/****MD加码生成位md码*/publicstaticStringstringMD(StringinStr){MessageDigestmd=null;try{md=MessageDigest.getInstance(“MD“);}catch(Exceptione){System.out.println(e.toString());e.printStackTrace();return““;}charcharArray=inStr.toCharArray();byte;for(inti=;i《charArray.length;i++)byteArray;bytemdBytes=md.digest(byteArray);StringBufferhexValue=newStringBuffer();for(inti=;i《mdBytes.length;i++){intval=((int)mdBytes)&xff;if(val《)hexValue.append(““);hexValue.append(Integer.toHexString(val));}returnhexValue.toString();}/***加密解密算法执行一次加密,两次解密*/publicstaticStringconvertMD(StringinStr){chara=inStr.toCharArray();for(inti=;i《a.length;i++){a^’t’);}Strings=newString(a);returns;}//测试主函数publicstaticvoidmain(Stringargs){Strings=newString(“tangfuqiang“);System.out.println(“原始:“+s);System.out.println(“MD后:“+stringMD(s));System.out.println(“加密的:“+convertMD(s));System.out.println(“解密的:“+convertMD(convertMD(s)));}}

您可能感兴趣的文章:

相关文章