2012-01-02 12 views
8

के साथ मैं अपनी पोस्ट को बैकएंडरवर चलाने वाले PHP में सुरक्षित करने के लिए एक एमडी 5 का उपयोग कर रहा हूं। पैरामीटर HTTP पोस्ट के माध्यम से भेज रहे हैं।एमडी 5 एंड्रॉइड और PHP

मुझे एक समस्या है, मेरे एमडी 5 गणना का परिणाम एंड्रॉइड और PHP सर्वर पर अलग है यदि इनपुट पैरामीटर में से एक में ü, ä या ö है।

एंड्रॉयड पर, हैश इस समारोह के माध्यम से की जाती है:

public static final String md5(final String s) { 
    try { 
     // Create MD5 Hash 
     MessageDigest digest = java.security.MessageDigest 
       .getInstance("MD5"); 
     digest.update(s.getBytes()); 
     byte messageDigest[] = digest.digest(); 

     // Create Hex String 
     StringBuffer hexString = new StringBuffer(); 
     for (int i = 0; i < messageDigest.length; i++) { 
      String h = Integer.toHexString(0xFF & messageDigest[i]); 
      while (h.length() < 2) 
       h = "0" + h; 
      hexString.append(h); 
     } 
     return hexString.toString(); 

    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } 
    return ""; 
} 

पीएचपी सर्वर पर मैं बस

md5() function. 
+1

कोई एन्कोडिंग मुद्दे की तरह लगता है (आईएसओ-8859-1 उदाहरण के लिए बनाम यूटीएफ -8)। आप किस चरित्र सेट का उपयोग कर रहे हैं? क्या आप कुछ कोड दिखा सकते हैं? –

+0

यकीन है, मैं अपनी पोस्ट संपादित करूंगा। – tobias

+1

वैसे, आप अपनी पोस्ट सुरक्षित करने के लिए SHA1 या अन्य एल्गोरिदम का उपयोग करना चाह सकते हैं ... MD% अब सुरक्षित नहीं है –

उत्तर

7

ऐसा लगता है कि PHP में md5 को utf-8 इनकोडिंग स्ट्रिंग पारित करने के लिए की जरूरत है:

md5(utf8_encode($string)); 
+0

Thx, यह गायब था। – tobias

1

का उपयोग यह हो सकता है कि आप मंच के डिफ़ॉल्ट चारसेट उपयोग कर रहे हैं।

यह आज़माएं:

digest.update(s.getBytes("UTF-8"); 
+0

मैंने अपने digest.update() को आपके साथ बदल दिया है, लेकिन मेरे पास अभी भी एक ही समस्या है। शायद मुझे यूटीएफ -8 को PHP पर सेट करना होगा? – tobias

संबंधित मुद्दे