2012-01-06 11 views
5

मेरे पास कई मूल्य हैं जिन्हें एक SHA256 हैश में एक वेब सेवा में पारित किया जाना चाहिए। इन मानों को एन्कोडिंग.एएससीआईआईआई.जीटबाइट्स (ऑलपरैमिटरहेयर) का उपयोग करके बाइट सरणी में जोड़ा जाता है और फिर myHashMethod.ComputeHash (AllParameterByteArray) द्वारा SHA256 को धोया जाता है। चूंकि मुझे यह मान एक अनुरोध शीर्षलेख में जोड़ना है, इसलिए इसे अनुरोध शीर्षलेख के लिए एक स्ट्रिंग के रूप में पारित किया जाना चाहिए।एपीआई पास करने के लिए स्ट्रिंग करने के लिए सी # हैशड बाइट सरणी को कैसे परिवर्तित करें?

तृतीय पक्ष प्रणाली की आवश्यकताएं यह बताती हैं कि यह स्ट्रिंग के 64 वर्ण हेक्स प्रारूप में होना चाहिए। मैंने अतीत में Convert.Base64String का उपयोग किया है, लेकिन मुझे लगता है कि वे ऐसा नहीं कर रहे हैं क्योंकि वे ऐसी स्ट्रिंग को पार करते समय केवल त्रुटियां प्राप्त करते हैं। कोई विचार?

धन्यवाद!

उत्तर

10

यह आपको अपरकेस हेक्स में परिणाम देगा, छोटे मामले को बनाने के लिए एक्स को एक्स में बदलें।

SHA256 हैश का SHA256 हैश का परिणाम बनने के लिए बदलें।

byte[] SHA256Result; 
StringBuilder stringBuilder = new StringBuilder(); 

foreach(byte b in SHA256Result) 
    stringBuilder.AppendFormat("{0:X2}", b); 

string hashString = stringBuilder.ToString(); 

परिणामी स्ट्रिंग hashString जाता है और लंबाई 64 होना चाहिए, मन SHA256Result में baring 32 बाइट है।

+0

क्या आप इसके बजाय 'स्ट्रिंगबिल्डर' और 'AppendFormat() 'का उपयोग नहीं करना चाहिए? – Nuffin

+0

यूप, अच्छा चिल्लाओ;) – craig1231

+0

बदल गया धन्यवाद। यह मेरे लिए काम किया। यह 7-ज़िप से परिणाम के ठीक ठीक से तुलना करता है। – FernandoZ

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