关于c#:无法将类型字符串隐式转换为byte []

Cannot implicitly convert type string to byte[]

我有一个用盐散列加密密码的类。

但是如果我想向类传递一个空值,我会得到以下错误:Cannot implicitly convert type string to byte[]

这是课程代码:

1
2
3
4
5
6
7
8
public class MyHash
{
    public static string ComputeHash(string plainText,
                            string hashAlgorithm, byte[] saltBytes)
    {
        Hash Code
    }
}

使用类时,会得到错误:"无法将类型字符串隐式转换为byte[]"

1
2
3
//Encrypt Password
byte[] NoHash = null;
byte[] encds = MyHash.ComputeHash(Password,"SHA256", NoHash);


这是因为您的"computehash"方法返回一个字符串,而您正试图将此返回值赋给一个字节数组;

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

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

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

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

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