2012-05-29 63 views
6

Tengo una clase que encripta una contraseña con un hash salado.No se puede convertir implícitamente un tipo de cadena a byte []

pero si quiero pasar un nulo a la clase me sale el siguiente error: Cannot implicitly convert type string to byte[]

Aquí está el código de la clase:

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

Cuando uso la clase me sale el error: " no se puede convertir implícitamente el tipo cadena de byte []"

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

¿Se supone que 'string' se puede convertir en' byte [] '? –

Respuesta

0

El tipo de retorno de la función ComputeHash es una cadena. Intenta asignar el resultado de su función a encds, que es byte []. El compilador le señala esta discrepancia, porque no hay una conversión implícita de cadena a byte [].

+0

Esto es lo que sucede cuando trabajas demasiadas horas. – MataHari

14

esto se debe a que el método de 'ComputeHash' devuelve una cadena, y que está tratando de asignar este valor de retorno a un byte de una rray con;

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

No hay implícita converstion de cadena a byte [] porque existen una serie de diferentes codificaciones para representar una cadena como bytes, como ASCII o UTF-8.

Necesita explícitamente convertir los bytes usando una clase de codificación apropiada como tal;

string x = "somestring"; 
byte[] y = System.Text.Encoding.UTF8.GetBytes(x); 
Cuestiones relacionadas