我有一个用加密哈希加密密码的类。
但是如果我想将null传递给类,我会收到以下错误:Cannot implicitly convert type string to byte[]
这是类代码:
public class MyHash
{
public static string ComputeHash(string plainText,
string hashAlgorithm, byte[] saltBytes)
{
Hash Code
}
}
当我使用该类时,我收到错误:“无法将类型字符串隐式转换为byte []”
//Encrypt Password
byte[] NoHash = null;
byte[] encds = MyHash.ComputeHash(Password, "SHA256", NoHash);
答案 0 :(得分:14)
这是因为你的'ComputeHash'方法返回一个字符串,并且你试图将这个返回值赋给一个带有的字节数组;
byte[] encds = MyHash.ComputeHash(Password, "SHA256", NoHash);
字符串到字节[]没有隐式转换,因为存在许多不同的编码来将字符串表示为字节,例如ASCII或UTF8。
您需要使用适当的编码类显式转换字节,如此;
string x = "somestring";
byte[] y = System.Text.Encoding.UTF8.GetBytes(x);
答案 1 :(得分:0)
ComputeHash
函数的返回类型为string
。您尝试将函数的结果分配给encds
,即byte[]
。编译器将此差异指向您,因为没有从string
到byte[]
的隐式转换。