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);

ASCII や UTF8 など、文字列をバイトとして表すさまざまなエンコーディングが存在するため、文字列からバイト [] への暗黙的な変換はありません。

次のような適切なエンコーディング クラスを使用して、バイトを明示的に変換する必要があります。

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

ComputeHash関数の戻り値の型はstring. 関数の結果を に代入しようとしますがencds、これはbyte[]です。stringからへの暗黙的な変換がないため、コンパイラはこの不一致を指摘しますbyte[]

于 2012-05-29T02:09:43.827 に答える