Başımın arkasındaki bir şey bana burada bariz bir şeyi kaçırdığımı söylüyor.MessageDigest MD5 Algoritma beklediklerimi geri dönmüyor
Varolan bir java projesini, kimlik doğrulama için bir api anahtarının md5 hashını kullanan üçüncü taraf bir api ile tümleştiriyorum. Benim için çalışmıyor ve hata ayıklama sırasında, ürettiklerimdeki karmaların, sağladıkları örneklerle uyuşmadığını fark ettim. Örneklerini kontrol etmek için dizelerden MD5 hash'leri yaratan bazı web siteleri buldum ve yanlış olduğumu söyleyebilirim ve haklılar.
örneğin this website'a göre "merhaba" dizgisi "5d41402abc4b2a76b9719d911017c592" değerinin bir hash'ını üretir. (FWIW Bu web sitesi hakkında hiçbir şey bilmiyorum, ancak benim sahip olduğum örnekleri doğru bir şekilde göremiyorum). Benim kod üzerinden çalıştırdığınızda alıyorum:
XUFAKrxLKna5cZ2REBfFkg == İşte
Ben md5 hash/dize .:
private String md5(String md5Me) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
md.reset();
md.update(md5Me.getBytes("UTF-8"));
return Base64.encodeBase64String(md.digest());
}
üretmek için kullanıyorum basit yöntemdir
Ben çok kullanılan Geçen hafta SHA1 algoritmasını kullanarak farklı bir API'yi başarıyla doğrulamak için benzer bir yöntem. Sorunun org.apache.commons.net.util.Base64.encodeBase64String ile ilgili olup olmadığını merak ediyorum ... Sadece bazı testlerin byteArray'ın doğru olup olmadığını, ancak dönüştürülen dizenin yanlış olduğunu görmek için herhangi bir yardım büyük beğeni topluyor. .
md.digest() aradığınız baytları içermeli, bunları Base64 algoritmasını kullanarak kodlayın ve farklı sonuç elde edin – hoaz
Bir http isteği için bu baytları bir String'e dönüştürmem gerekiyor, bunu yapmak için daha iyi bir yol var mı ? – eric
new String (byte [] bayt) – Andy