C# UTF8编码的密码字节[]与SHA512加密到字符串转换
我用c#创建了一个web表单,它接受用户名和密码,并以MSSQL 2005 db的“图像”格式存储密码。密码与salt合并,用UTF8编码,最后应用SHA512加密。当我从数据库中提取密码时,我希望能够看到字符串格式的密码。如果下面是我加密密码的方式,我的解密函数应该是什么?有可能吗C# UTF8编码的密码字节[]与SHA512加密到字符串转换,c#,passwords,C#,Passwords,我用c#创建了一个web表单,它接受用户名和密码,并以MSSQL 2005 db的“图像”格式存储密码。密码与salt合并,用UTF8编码,最后应用SHA512加密。当我从数据库中提取密码时,我希望能够看到字符串格式的密码。如果下面是我加密密码的方式,我的解密函数应该是什么?有可能吗 string loginID = "";//This will be stored in varchar format in MSSQL..(Unrelated to the question) s
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中,salt作为int存储。根据定义,hash函数就是单向函数。在最后一行之前,您可以获取密码,但在使用哈希函数之后,您所能做的就是生成第二个哈希,然后比较这两个哈希,看看它们是否产生了相同的结果,在这种情况下,您可以假定源字符串是相同的。是否可以检索salt和哈希密码,并将其作为web服务发送到一些MD5解密站点/服务?