当前页面: 开发资料首页 → JSP 专题 → 一个关于java md5加密的问题,困扰小弟好多天了,泣求!!!(我的社区就剩50分了,抱歉)
一个关于java md5加密的问题,困扰小弟好多天了,泣求!!!(我的社区就剩50分了,抱歉)
摘要: 一个关于java md5加密的问题,困扰小弟好多天了,泣求!!!(我的社区就剩50分了,抱歉)
我是将一个asp网站改版,在导入原有网站数据时在密码加密那出现了麻烦:
原网站是用asp加密的16位密码,但不知道在java中怎么能加密成和我原asp中一样的密码,这里我有两个疑问:
1、在java中,我们一般是用java.security下的东西来加密,一般没有人去实现整个md5加加密的算法
过程,那么我不知道asp的加密方式和java的加密方式是不是一样,是不是所有的md5加密的结果都
是一样的(如果加密后的位数是一样的)?不管是asp还是java,或者是其他的?
2、小弟还在想,md5的加密结果是不是可以人为地改变
希望各位大虾们拿出援助之手,来解救我这只迷途的羔羊吧!
希望得到java md5与asp md5加密结果一样的代码。
结果是一样的
这里有个Hash算法
http://blog.csdn.net/fengfangfang/archive/2006/08/16/1068563.aspx
如果加密结果一样的话,我想要一个加密成16位码的java md5加密类
楼上的加密结果好像不行啊,先谢了!!!
MD5标准加密出来是32位的
一般16位的是截取了其中一部分
1、结果使一样的
2、不可以人为改变
import java.security.MessageDigest;
/**
* 文本信息摘要
* @param fileStr
* @return
*/
public static String File2MD5Str(String fileStr){
String EnptyMD5Str="";
byte[] filebyte=null;
File xmlfile=null;
FileInputStream fi=null;
int EveryDobytelen=10000000;//10M
//System.out.println(fileStr+" begin "+Calendar.getInstance().getTime());
//299383067
try {
xmlfile=new File(fileStr);
fi= new FileInputStream(xmlfile);
long fl=fi.available();
int fsize=Integer.parseInt(String.valueOf(fl));
int loopnum= fsize/EveryDobytelen;
int last= fsize%EveryDobytelen;
if(loopnum<5){
filebyte=new byte[fsize];
fi.read(filebyte,0,fsize);
EnptyMD5Str=byte2MD5Str(filebyte);
}
//如果文件尺寸超过50M采用分段流处理
else{
String appStr="";//分段MD集合
//如果文件尺寸超过200M,每次读50M字节,减少MD次数,提高效率。
//if(loopnum>20) {
//EveryDobytelen=50000000;//50M
//loopnum= fsize/EveryDobytelen;
//last= fsize%EveryDobytelen;
//}
filebyte=new byte[EveryDobytelen];
for(int i=0;i
fi.read(filebyte,0,EveryDobytelen);
String getMDStr=byte2MD5Str(filebyte);
appStr+=getMDStr;
}
if (last>0){
int leftsize= fsize-loopnum*EveryDobytelen;
fi.read(filebyte,0,leftsize);
String getMDStr=byte2MD5Str(filebyte);
appStr+=getMDStr;
}
EnptyMD5Str=byte2MD5Str(appStr.getBytes());
}
}
catch(Exception ex){
ex.printStackTrace();
}
finally{
filebyte=null;
xmlfile=null;
try{
fi.close();
}catch(Exception e){}
}
return EnptyMD5Str;
}
多谢各位,问题解决了,给分
是用谁的方法解决的,还是用自己的方法