UTF8编码密码Byte []用SHA512加密到字符串转换

时间:2011-08-03 19:00:41

标签: c# passwords bytestring

我在c#中创建了一个Web表单,它接受用户名和密码,并以'image'格式在MSSQL 2005 db中存储密码。密码与salt合并,以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中的值作为image数据类型存储在MSSQL中,salt存储为int。

1 个答案:

答案 0 :(得分:2)

你不能 - 根据定义,哈希函数就是单向函数。直到最后一行,你可以得到密码,但是在哈希函数之后,你所能做的就是生成第二个哈希并比较两个哈希,看看它们是否产生了相同的结果,在这种情况下你可以假设源字符串是相同的。