【问题标题】:UTF8 encoded password Byte[] with SHA512 encryption to string conversion使用 SHA512 加密的 UTF8 编码密码 Byte[] 到字符串的转换
【发布时间】:2011-08-03 19:00:41
【问题描述】:

我在 c# 中创建了一个 Web 表单,它接受用户名和密码,并将密码以“图像”格式存储在 MSSQL 2005 db 中。密码与盐合并,以 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。

【问题讨论】:

    标签: c# passwords


    【解决方案1】:

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

    【讨论】:

    • 是否可以检索盐和散列密码并将其作为 Web 服务发送到某些 MD5 解密站点/服务?
    猜你喜欢
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多