2012-05-29 13 views
6

में स्पष्ट रूप से परिवर्तित नहीं कर सकता है मेरे पास एक कक्षा है जो नमकीन हैश के साथ पासवर्ड एन्क्रिप्ट करता है।टाइप स्ट्रिंग को बाइट []

लेकिन अगर मैं वर्ग मैं निम्न त्रुटि प्राप्त करने के लिए एक अशक्त पास करना चाहते हैं: Cannot implicitly convert type string to byte[]

यहाँ वर्ग कोड है:

public class MyHash 
{ 
    public static string ComputeHash(string plainText, 
          string hashAlgorithm, byte[] saltBytes) 
    { 
     Hash Code 
    } 
} 

जब मैं क्लास का उपयोग मैं त्रुटि मिलती है: " परोक्ष प्रकार स्ट्रिंग कनवर्ट नहीं कर सकता बाइट के लिए [] "

//Encrypt Password 
byte[] NoHash = null; 
byte[] encds = MyHash.ComputeHash(Password, "SHA256", NoHash); 
+0

क्या स्ट्रिंग को 'बाइट [] 'में परिवर्तनीय माना जाना चाहिए? –

उत्तर

0

आपके ComputeHash फ़ंक्शन का रिटर्न प्रकार एक स्ट्रिंग है। आप अपने फ़ंक्शन का परिणाम एन्कोड को असाइन करने का प्रयास करते हैं, जो बाइट [] है। कंपाइलर आपको इस विसंगति को इंगित करता है, क्योंकि स्ट्रिंग से बाइट [] तक कोई अंतर्निहित रूपांतरण नहीं है।

+0

यह तब होता है जब आप बहुत अधिक घंटे काम करते हैं। – MataHari

14

इसका कारण यह है अपने 'ComputeHash' विधि एक स्ट्रिंग रिटर्न है, और आप एक बाइट एक को यह वापसी मान असाइन करने की कोशिश कर रहे हैं के साथ रोना;

byte[] encds = MyHash.ComputeHash(Password, "SHA256", NoHash); 

कोई निहित क्योंकि वहाँ विभिन्न एन्कोडिंग भी शामिल हैं, जैसे ASCII या UTF8 के रूप में बाइट्स, के रूप में एक स्ट्रिंग प्रतिनिधित्व करने के लिए बाइट के लिए स्ट्रिंग [] के लिए converstion।

आपको स्पष्ट रूप से उचित एन्कोडिंग क्लास का उपयोग करके बाइट्स को परिवर्तित करने की आवश्यकता है;

string x = "somestring"; 
byte[] y = System.Text.Encoding.UTF8.GetBytes(x); 
संबंधित मुद्दे