I have a class that encrypts a password with a salted hash.
But If I want to pass a null to the class I get the following error: Cannot implicitly convert type string to byte[]
Here is the class code:
public class MyHash
{
public static string ComputeHash(string plainText,
string hashAlgorithm, byte[] saltBytes)
{
Hash Code
}
}
When I use the class I get the error: "Cannot implicitly convert type string to byte[]"
//Encrypt Password
byte[] NoHash = null;
byte[] encds = MyHash.ComputeHash(Password, "SHA256", NoHash);
You can't convert a string to a byte array directly, because a string is (normally) made of unicode characters, which don't "map" directly to single bytes - they are variable length values. string s = ... byte[] bytes = System. Text. Encoding.
The Encoding. GetBytes() method converts a string into a bytes array. The example below converts a string into a byte array in Ascii format and prints the converted bytes to the console.
This is because your 'ComputeHash' method returns a string, and you are trying to assign this return value to a byte array with;
byte[] encds = MyHash.ComputeHash(Password, "SHA256", NoHash);
There is no implicit converstion for string to byte[] because there exist a number of different encodings to represent a string as bytes, such as ASCII or UTF8.
You need to explicitly convert the bytes using an appropriate encoding class like so;
string x = "somestring";
byte[] y = System.Text.Encoding.UTF8.GetBytes(x);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With