DataContext
в MainWindow
не является DataContext
в Page
в Frame
. Вы можете установить DataContext фрейма программно, хотя:
Page
в Frame
автоматически не наследует DataContext
из MainWindow
, но вы можете установить его свойство DataContext
когда вы загружаете Page
:
Home home = new Home();
home.DataContext = viewModel;
MyFrame.Content = home;
При выполнении кода от сайта MSDN Вы заключаете в кавычки:
// Hash an input string and return the hash as
// a 32 character hexadecimal string.
static string getMd5Hash(string input)
{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();
// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
// Return the hexadecimal string.
return sBuilder.ToString();
}
static void Main(string[] args)
{
System.Console.WriteLine(getMd5Hash("password"));
}
возвраты:
5f4dcc3b5aa765d61d8327deb882cf99
Эта версия VB.Net дает те же результаты как MySQL на основе моего собственного опыта:
Private Function MD5Hash(ByVal str As String) As String
Dim md5 As MD5 = MD5CryptoServiceProvider.Create
Dim hashed As Byte() = md5.ComputeHash(Encoding.Default.GetBytes(str))
Dim sb As New StringBuilder
For i As Integer = 0 To hashed.Length - 1
sb.AppendFormat("{0:x2}", hashed(i))
Next
Return sb.ToString
End Function
Я получаю то же значение как тот веб-сайт о слове "пароль":
$ echo -n password | md5
5f4dcc3b5aa765d61d8327deb882cf99
Не видя код Вы на самом деле используете, трудно сказать то, что могло бы идти не так, как надо.
Что касается хранения хешей в базе данных, я храню их как шестнадцатеричную строку. Хотя большинство баз данных может обработать двоичные блобы, храня их, поскольку двоичный файл только сохраняет половину пространства, и их более трудно запросить и управлять. Возможности являются другими данными, которые Вы храните наряду с хешем, больше так или иначе.
У Вас есть какой-либо код, как Вы пытаетесь сделать это?
(ответ на второй Q) я обычно использую строковое поле и храню его как кодирование BASE64. Достаточно легкий работать с и сделать сравнения.
/// <summary>
/// Gets the Base 64 encoded SHA1 hashed password
/// </summary>
/// <returns>A Base 64 encoded string representing the SHA1 Hash of the password</returns>
public string ToBase64SHA1String()
{
return Convert.ToBase64String(this.GetSHA1HashCode());
}
Также следует отметить, что суммы MD5 можно взломать с помощью радужных таблиц (в Интернете есть бесплатные программы, которые принимают сумму MD5 в качестве входных данных и выводят открытый текст - обычно это пароль)
SHA1 вероятно, лучший выбор ...
РЕДАКТИРОВАТЬ: добавление соли - хороший способ предотвратить обратное преобразование вашего хэша
РЕДАКТИРОВАТЬ 2: если бы я потрудился прочитать ваш пост, я бы « Я заметил, что вы уже упоминали, что планируете добавить соль