UTF8 кодированный пароль Byte [] с шифрованием SHA512 в строку - PullRequest
1 голос
/ 03 августа 2011

Я создал веб-форму в c #, которая принимает имя пользователя и пароль и сохраняет пароль в MSSQL 2005 db в формате 'image'. Пароль объединяется с солью, кодируется в UTF8 и, наконец, применяется с шифрованием SHA512. Я хочу видеть пароли в строковом формате, когда я возвращаю их из базы данных. Какой должна быть моя функция дешифрования, если ниже описано, как я зашифровал пароль? Это возможно? :

    string loginID = "";//This will be stored in varchar format in MSSQL..(Unrelated to the question)
    string password =""; //This is where I store password inputted by user.
    Random r = new Random();
    int salt = r.Next((int)Math.Pow(2, 16));
    int verifyCode = r.Next((int)Math.Pow(2, 16));
    string tmpPwd = password.ToLower() + salt.ToString();
    UTF8Encoding textConverter = new UTF8Encoding();
    byte[] passBytes = textConverter.GetBytes(tmpPwd);
    byte[] hashedPWD = new SHA512Managed().ComputeHash(passBytes);

Значение в hashedPWD сохраняется в MSSQL как тип данных изображения, а соль - как int.

1 Ответ

2 голосов
/ 03 августа 2011

Вы не можете - это то, что хеш-функция по определению - односторонняя функция. Вплоть до последней строки вы можете вернуть пароль обратно, но после хеш-функции все, что вы можете сделать, это сгенерировать второй хеш и сравнить их, чтобы увидеть, дали ли они одинаковый результат, и в этом случае вы можете предположить, что исходные строки были одинаковыми.

...