8

我有一个用加盐哈希加密密码的类。

但是,如果我想将 null 传递给类,则会收到以下错误: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);
4

2 回答 2

15

这是因为您的“ComputeHash”方法返回一个字符串,并且您试图将此返回值分配给一个字节数组;

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

字符串到 byte[]没有隐式转换,因为存在许多不同的编码来将字符串表示为字节,例如 ASCII 或 UTF8。

您需要像这样使用适当的编码类显式转换字节;

string x = "somestring";
byte[] y = System.Text.Encoding.UTF8.GetBytes(x);
于 2012-05-29T02:09:34.167 回答
0

ComputeHash您的函数的返回类型是 a string。您尝试将函数的结果分配给encds,即byte[]。编译器会向您指出这种差异,因为没有从stringto的隐式转换byte[]

于 2012-05-29T02:09:43.827 回答