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