導航:首頁 > 編程語言 > javamd5不一致

javamd5不一致

發布時間:2022-06-25 23:55:45

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之後結果是否相同,若相同,前後的字元串就是同一個,若不用,字元串就不一樣唄,它的目的是為了防止解密的。你要知道它的結果幹嘛呢

閱讀全文

與javamd5不一致相關的資料

熱點內容
python調用無參函數 瀏覽:798
主管開除女程序員 瀏覽:712
雲伺服器轉售 瀏覽:540
壓縮空氣漏氣量怎樣計算 瀏覽:102
手機app是怎麼跳轉的 瀏覽:664
學編程的重要性 瀏覽:24
程序員去按摩 瀏覽:739
奧迪手機控車app怎麼添加愛車 瀏覽:4
收磚機石獅編程培訓廠家 瀏覽:761
吉里吉里2安卓模擬器怎麼用 瀏覽:818
編譯器將匯編代碼 瀏覽:681
電路板加密錯誤 瀏覽:21
java自動機 瀏覽:363
相機連拍解壓 瀏覽:31
linuxssh服務重啟命令 瀏覽:330
茂名氫氣隔膜壓縮機 瀏覽:47
程序員地鐵寫程序 瀏覽:330
java的switchenum 瀏覽:329
pdf瓷器 瀏覽:905
怎樣用adb命令刷機 瀏覽:962