2012-05-29 20 views
6

Mam klasy, która szyfruje hasło z solonym hash.Nie można niejawnie przekonwertować ciągu znaków na bajt []

ale jeśli chcesz przekazać null do klasy I pojawia się następujący błąd: Cannot implicitly convert type string to byte[]

Oto kod klasy:

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

Kiedy używać klasy I pojawia się błąd: " nie można niejawnie przekonwertować typu ciąg byte []”

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

Czy 'string's ma być zamienny na' byte [] '? –

Odpowiedz

0

Typ powrotu funkcji ComputeHash to ciąg znaków. Próbujesz przypisać wynik twojej funkcji do encds, który jest bajtem []. Kompilator wskazuje na tę rozbieżność, ponieważ nie ma niejawnej konwersji z ciągu na bajt [].

+0

Tak dzieje się, gdy pracujesz za dużo godzin. – MataHari

14

to dlatego, że«ComputeHash»metoda zwraca ciąg znaków, a ty próbujesz przypisać tę wartość powrotną do bajt posiada raper z;

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

Nie ma niejawna converstion na ciąg byte [], ponieważ istnieje wiele różnych kodowań do reprezentowania ciąg jako bajtów, takich jak ASCII lub UTF-8.

Musisz jawnie konwertować bajty za pomocą odpowiedniej klasy kodowania jak;

string x = "somestring"; 
byte[] y = System.Text.Encoding.UTF8.GetBytes(x); 
Powiązane problemy