2012-04-05 14 views
5

मैं वर्तमान में एक पायथन 3.2 प्रोग्राम को सी # में परिवर्तित करने के लिए एक प्रोजेक्ट पर काम कर रहा हूं।पायथन 3.2 में हेक्सडिजिस्ट के बराबर सी # समतुल्य क्या है?

पायथन प्रोग्राम में कोड की एक पंक्ति है जो डबल लम्बाई की एक स्ट्रिंग ऑब्जेक्ट देता है, जिसमें केवल हेक्साडेसिमल अंक होते हैं।

अजगर कार्यक्रम में कोड का सा है:

if sha1.hexdigest().upper() == hash_string: 
    #do whatever 

मैं कोशिश कर रहा था और अजगर में hashlib से hexdigest के सी # में एक समान लगता है करने में नाकाम रहने।

सी # में मुझे पहले से ही एक बाइट सरणी में SHA1 हैश मिला है, लेकिन हेक्सडिजिस्ट के बराबर करने के लिए मैंने कोशिश की सभी विधियों ने हैश_स्ट्रिंग को एक मैच प्रदान करने में असफल रहा है - जो कि sha1 का हेक्सडिजिस्ट है मैच होना चाहिए।

मुझे यकीन नहीं है कि समस्या वह तरीका है जिसका उपयोग मैं हेक्सडिजिस्ट या विधि का उपयोग करने के लिए कर रहा हूं जिसका उपयोग मैं पहली जगह में शै 1 हैश उत्पन्न करने के लिए करता हूं - तो यह शानदार होगा अगर किसी के पास हेक्सडिजिस्ट विधि हो वे जानते हैं काम करता है क्योंकि इससे मुझे समस्या के कम से कम एक संभावित कारण को खत्म करने की अनुमति मिल जाएगी।

विधि मैं hexdigest के स्थान पर इस समय का उपयोग कर रहा है:

string hexaHash = ""; 
foreach (byte b in sha1result) 
{ 
    hexaHash += String.Format("{0:x2}", b); 
} 
string result = hexaHash; 

संपादित करें: facepalm ठीक है, मैं सिर्फ बाहर काम क्या मेरी समस्या थी। पाइथन में sha1 हैश उत्पन्न करते समय यह कम मामले हेक्स स्ट्रिंग से कर रहा था। मेरे सी # में यह एक ऊपरी मामला हेक्स स्ट्रिंग था। तो मुझे लगता है कि हेक्सडिजिस्ट समकक्ष मैं उपयोग कर रहा हूं ठीक है जैसा कि है। लोगों के समय को बर्बाद करने के लिए खेद है।

+1

जब तुलना तार जो बाहरी सिस्टम से आते हैं सुनिश्चित दोनों, अपरकेस में हैं मामले बाहरी प्रणाली और कोड विफल हो जाएगा अंत में बदला जा सकता है के बाद से, इसलिए हमेशा localValue.ToUpper() == externalValue.ToUpper (कर ') ' – sll

+1

डुप - http://stackoverflow.com/questions/3899644/convert-python-to-c-sharp –

उत्तर

3

इसे परिवर्तित करने के लिए HMACSHA1 कक्षा का उपयोग करें।

+1

कुछ कोड अच्छा होगा ... सुंदर कृपया! – noelicus

2
var hmac = BitConverter.ToString(hashBytes).Replace("-", "").ToLower(); 
हमेशा
संबंधित मुद्दे