问题描述
下面是一段.textblog中的密码加密代码,现在数据库中已经大量存在这些加密后的密码了,公司要求用JAVA再做一个入口,如果用户从JAVA口进入,也要判断用户名与密码是不是一致,但问题是那个是C#的专用加密算法,用JAVA如何实现呢?请教大家了!代码如下:strText=strText.ToLower();Byte[]clearBytes=newUnicodeEncoding().GetBytes(strText);Byte[]hashedBytes=((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);returnBitConverter.ToString(hashedBytes);
解决方案
解决方案二:
就是要一个MD5加密呗?
解决方案三:
md5加密嘛
解决方案四:
importjava.security.MessageDigest;/***@authorclosewbq*@version1.0*对密码进行加密和验证*/publicclassMD5Util{/***16进制下的映射数组*/privatefinalstaticString[]hexDigits={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};/***将密码进行加密处理*@parampassword*@return加密后的字符串*/publicstaticStringgetPassByMD5(Stringpassword){returnstringByMD5(password);}/***验证登录密码是否正确*@parampassword加密后的密码*@paramloginPassword登录的密码*@return验证结果,TRUE:正确FALSE:错误*/publicstaticbooleanvalidatePassword(Stringpassword,StringloginPassword){if(password.equals(stringByMD5(loginPassword))){returntrue;}else{returnfalse;}}/***对字符串进行加密处理*@paramstrString*@return加密后的字符串*/privatestaticStringstringByMD5(StringstrString){if(strString!=null){try{//创建MD5算法的信息摘要MessageDigestmd=MessageDigest.getInstance("MD5");byte[]results=md.digest(strString.getBytes());//将得到的字节数组变成字符串返回StringresultString=byteArrayToHexString(results);returnresultString.toUpperCase();}catch(Exceptionex){ex.printStackTrace();}}returnnull;}/***转换字节数组为十六进制字符串*@param字节数组*@return十六进制字符串*/privatestaticStringbyteArrayToHexString(byte[]results){StringBufferresultSb=newStringBuffer();for(inti=0;i<results.length;i++){resultSb.append(byteToHexString(results[i]));}returnresultSb.toString();}/***将一个字节转化成十六进制形式的字符串*@paramb*@return十六进制形式的字符*/privatestaticStringbyteToHexString(byteb){intn=b;if(n<0)n=256+n;intd1=n/16;intd2=n%16;returnhexDigits[d1]+hexDigits[d2];}}
.net进行加密我们一般也不这么写呀,System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5");
解决方案五:
感谢各位的关注,但这个问题是个很精典的问题,比如:http://lendy.9846.com/blog/2009/01/07/php-dottext-password/请各位帮忙!
解决方案六:
MD5加密是个好办法
解决方案七:
那你就加密后再比较那样行不行加密解密这个没接触过
解决方案八:
引用3楼closewbq的回复:
Javacodeimportjava.security.MessageDigest;/***@authorclosewbq*@version1.0*对密码进行加密和验证*/publicclassMD5Util{/***16进制下的映射数组*/privatefinalstaticStri……
三楼正解,在.net中md5加密一句话就OK,楼主的方法就是重复造轮子
解决方案九:
引用7楼szvsking的回复:
引用3楼closewbq的回复:Javacodeimportjava.security.MessageDigest;/***@authorclosewbq*@version1.0*对密码进行加密和验证*/publicclassMD5Util{/***16进制下的映射数组*/privatefinals……
解决方案十:
楼主,其实你上面做的就是一个哈希算法,这种在怎么语言下都有,也不是c#下专有,我还以为什么问题呢。
解决方案十一:
好了,不说什么了,1234用C#算法加密完:0F-03-75-84-C9-9E-7F-D4-F4-F8-C5-95-50-F8-F5-07md5是:81dc9bdb52d04dc20036dbd8313ed055哪位用JAVA把1234加完MD5是上面c#那样,我二百分献上,不够再开一帖子
解决方案十二:
引用10楼littlehb的回复:
好了,不说什么了,1234用C#算法加密完:0F-03-75-84-C9-9E-7F-D4-F4-F8-C5-95-50-F8-F5-07md5是:81dc9bdb52d04dc20036dbd8313ed055哪位用JAVA把1234加完MD5是上面c#那样,我二百分献上,不够再开一帖子
是和81dc9bdb52d04dc20036dbd8313ed055这个一样?还是和0F-03-75-84-C9-9E-7F-D4-F4-F8-C5-95-50-F8-F5-07一样?
解决方案十三:
0F-03-75-84-C9-9E-7F-D4-F4-F8-C5-95-50-F8-F5-07一样
解决方案十四:
引用3楼closewbq的回复:
Javacodeimportjava.security.MessageDigest;/***@authorclosewbq*@version1.0*对密码进行加密和验证*/publicclassMD5Util{/***16进制下的映射数组*/privatefinal……
话说这个java的实现复杂了,不过比较通用!MessgeDigest是专门用来加密的类!publicStringtoMD5(Stringinput){MessageDigestdigest=MessageDigest.getInstance("MD5");byte[]res=digest.digest(input.getBytes());returntoHex(res);}privateStringtoHex(byte[]input){StringBufferbuffer=newStringBuffer();for(inti=0;i<input.length;i++){intlow=input[i]&0x0f;inthigh=(input[i]>>>4)&0x0f;buffer.append(Character.forDigit(high,16));buffer.append(Character.forDigit(low,16));}returnbuffer.toString();}
解决方案十五:
三楼的方法很好!
解决方案:
现在我的问题是对应不上,不是我不会使用MD5加密,各位明白?
解决方案:
楼主解决了吗?我也遇到这个问题了,急求!非常感谢啦
解决方案:
像这样的多程序入口,还是用webservice吧!!!C#写个webservice,java程序来调用就好了。