㈠ java生成的MD5,和c#的生成的不一致,有java代码,求c#代码!
考虑一下中文字符问题。两边使用的编码是不是一样的。保持一样就可以了。
建议使用UTF8编码
JAVA代码如下(在你给同的代码上只做了少量修改):
publicclassSecurity{
publicstaticvoidmain(String[]args){
try{
System.out.println(MD5("中国"));
}catch(Exceptionex){}
}
publicstaticStringMD5(Stringtxt){
charhexDigits[]={'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f'};
try{
byte[]btInput=txt.getBytes("utf-8");
MessageDigestmdInst=MessageDigest.getInstance("MD5");
//使用指定的字节更新摘要
mdInst.update(btInput);
//获得密文
byte[]md=mdInst.digest();
//把密文转换成十六进制的字符串形式
intj=md.length;
charstr[]=newchar[j*2];
intk=0;
for(inti=0;i<j;i++){
bytebyte0=md[i];
str[k++]=hexDigits[byte0>>>4&0xf];
str[k++]=hexDigits[byte0&0xf];
}
returnnewString(str);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
}
C#代码如下:
staticvoidMain(string[]args)
{
Console.WriteLine(Md5("中国"));
Console.ReadLine();
}
staticstringMd5(stringtxt){
byte[]result=Encoding.UTF8.GetBytes(txt);
MD5md5=newMD5CryptoServiceProvider();
byte[]output=md5.ComputeHash(result);
returnBitConverter.ToString(output).Replace("-","");
}
㈡ jquery.md5.js java md5不一致,求解
因为Java默认编码是unicode, byte[] btInput = s.getBytes();获得的是默认的unicode的byte数组。需要将这句改为byte[] btInput = s.getBytes("utf-8");就OK啦。
㈢ JAVA md5加密 两次不一致 中英文问号
把代码发一下 。可能是编码问题 也可能是字节数组转化字符串的问题
㈣ Java 与 php 的MD5加密为什么不一样
JAVA是根据unicode编码 PHP编码跟是跟加密编码一样的
JAVA字符数据在散列时的编码和PHP编码如果能保持一致 那么加密方式相同!
仔细分下用代码可以实现加密一样
㈤ 为什么同样的字串,在java里面,MD5加密后密文也不同
你这个打印出来的是两个byte数组的地址,肯定不一样啦。
标准的md5算法,对同一个字符串加密后的密文绝对是相同的,你需要将两个byte数组的内容转换成字符串类型,然后打印就没问题啦。
㈥ C#的MD5加密为什么和JAVA加密出来的结果不一样
两个加密的结果是相同的,如果出现不同可能是你的encodint可能不一样,都换成ACSII试试
㈦ java的32位MD5加密与php中的32位MD5加密结果不一样。求帮助。急急急
Java的字符串是unicode编码,不受源码文件的编码影响;而PHP的编码是和源码文件的编码一致,受源码编码影响。例中java字符数据在散列时的编码和php编码未能保持一致,我认为这是导致输出不同的“病理”
由于未知mad.toMd5的具体实现,问题直接成因应该在toMd5的String到byte[]转换时的编码上,或者未设置或者设置了错误的编码
但只要java的字符串先getBytes获得字节串,并和php源码编码一致,就能获得一致结果。
㈧ JAVA和C#MD5加密结果不一样,怎么办
static void Main(string[] args)
{
string input = "";
string output = md5(input);
Console.WriteLine(output);
Console.ReadLine();
}
public static string md5(string password)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] res = md5.ComputeHash(Encoding.Default.GetBytes(password), 0, password.Length);
StringBuilder builder = new StringBuilder();
foreach (byte b in res)
{
builder.Append(Convert.ToString(b, 16));
}
return builder.ToString();
}
㈨ 用java在不同操作系统做 MD5 值不相同吗
MD5只是一个特殊的算法,它跟操作系统是没关系的。MD5本来就不用去管它 的结果的,你只要去判断新的字符串通过MD5之后结果是否相同,若相同,前后的字符串就是同一个,若不用,字符串就不一样呗,它的目的是为了防止解密的。你要知道它的结果干嘛呢