2013-11-15 5 views
0

Я использую этот код для хэширования строкимагазин sha256 строку DB

static string hashPassword(string password) 
    { 
     SHA256Managed crypt = new SHA256Managed(); 
     string hash = String.Empty; 
     byte[] crypto = crypt.ComputeHash(Encoding.UTF8.GetBytes(password), 0, Encoding.UTF8.GetByteCount(password)); 
     foreach (byte bit in crypto) 
     { 
      hash += bit.ToString("x2"); 
     } 
     return hash; 
    } 

строка затем сохраняется в базе данных в поле «пароль» типа данных NVARCHAR (макс) для тестирования. Проблема:

когда я запускаю код

string password = hashPassword(maskedTextBox1.Text.ToString()); 
int valid = this.op_radnikTableAdapter.fLoginData(dimproDataSet.op_radnik, 
        korisnicko_ime, Convert.ToString(password)); 

ИНТ действует всегда 0. Когда я запускаю запрос в студии управления SQL или набора данных построитель запросов подряд возвращается:

SELECT TOP 1000 [radnik_id] 
    ,[radnik_aktivan] 
    ,[radnik_dimpro] 
    ,[radnik_ime_prezime] 
    ,[radnik_password] 
    ,[radnik_korisnicko_ime] 
    ,[radnik_isAdmin] 
    FROM [dimpro].[dbo].[op_radnik] 
    WHERE (radnik_korisnicko_ime = 'administrator' AND radnik_password = '9af15b336e6a9619928537df30b2e6a2376569fcf9d7e773eccede65606529a0') 

пароль 0000 (sha256)

fLoginData

SELECT  radnik_id, radnik_aktivan, radnik_ime_prezime, radnik_password, radnik_dimpro, radnik_korisnicko_ime, radnik_isAdmin 
    FROM   op_radnik 
    WHERE  (radnik_korisnicko_ime = @korisnicko_ime) AND (radnik_password = @pass) 

благодарит

+0

код хэширования выглядит хорошо, моя догадка проблема в том, что проще всего с тем значением, которое вы передаете для radnik_korisnicko_ime или что-то в fLoginData() –

ответ

0

Я закончил с новым SQL SELECT STATEMENT. Заявление такое же, но теперь работает, не знаю почему.

0

У вас есть .ToString() и Convert.ToString который не нужен, потому что переменная пароль уже строка. Также поле textbox.Text также является строкой. Я сомневаюсь, что это будет проблемой, но это возможно.

Попробуйте это:

string password = hashPassword(maskedTextBox1.Text); 
int valid = this.op_radnikTableAdapter.fLoginData(dimproDataSet.op_radnik, 
       korisnicko_ime, password); 

ли это, что-либо изменить?

Что такое код для fLoginData, и каково значение dimproDataSet.op_radnik и korisnicko_ime при отладке?

+0

Convert.ToString добавляется непосредственно перед тем, как задать этот вопрос? Это то же самое с или без convert.tostring.Edited вопрос с запросом fLoginData – Carlo

+0

значения при отладке верны. Имя пользователя: administrator Пароль: 9af15b336e6a9619928537df30b2e6a2376569fcf9d7e773eccede65606529a0 – Carlo

Смежные вопросы