You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何逆向分析SHA512Managed哈希生成逻辑?适配现有用户密码库

排查商用工具哈希生成逻辑的可行方案

已知测试用户的明文密码、盐值和目标哈希,你可以通过以下步骤逐步验证并还原哈希生成逻辑:

1. 先确认核心编码与组合规则

首先排除最基础的编码和组合顺序问题:

  • 编码验证:将明文密码和盐值分别用UTF-8、UTF-16LE(.NET默认Unicode)、ASCII编码转为字节数组,尝试所有组合。
  • 组合顺序:测试密码字节+盐字节、盐字节+密码字节、密码字节+分隔符字节(如冒号、空字节)+盐字节这几种常见组合,生成SHA512哈希后转Base64(88位长度的哈希大概率是Base64编码的64字节SHA512结果),对比数据库中的值。

示例代码:

using System.Security.Cryptography;
using System.Text;

public static string GenerateHash(string password, string salt, Encoding encoding, bool passwordFirst = true)
{
    byte[] passwordBytes = encoding.GetBytes(password);
    byte[] saltBytes = encoding.GetBytes(salt);
    byte[] combined = passwordFirst 
        ? CombineBytes(passwordBytes, saltBytes) 
        : CombineBytes(saltBytes, passwordBytes);
    
    using (var sha512 = SHA512.Create())
    {
        byte[] hashBytes = sha512.ComputeHash(combined);
        return Convert.ToBase64String(hashBytes);
    }
}

private static byte[] CombineBytes(byte[] a, byte[] b)
{
    byte[] result = new byte[a.Length + b.Length];
    Buffer.BlockCopy(a, 0, result, 0, a.Length);
    Buffer.BlockCopy(b, 0, result, a.Length, b.Length);
    return result;
}

2. 验证是否使用PBKDF2迭代哈希

很多商用工具不会用单次SHA512,而是用PBKDF2-HMAC-SHA512(带迭代次数的密钥派生)。你可以尝试常见的迭代次数(1000、2000、10000、100000),生成64字节的派生值后转Base64对比:

示例代码:

public static string GeneratePbkdf2Hash(string password, string salt, int iterations, Encoding encoding)
{
    byte[] passwordBytes = encoding.GetBytes(password);
    byte[] saltBytes = encoding.GetBytes(salt);
    
    using (var pbkdf2 = new Rfc2898DeriveBytes(passwordBytes, saltBytes, iterations, HashAlgorithmName.SHA512))
    {
        byte[] hashBytes = pbkdf2.GetBytes(64); // SHA512对应64字节
        return Convert.ToBase64String(hashBytes);
    }
}

3. 检查是否有额外的固定字符串或盐处理

有些工具会在密码前后拼接固定字符串(如"APP_PREFIX_" + password + salt + "_APP_SUFFIX"),或者对盐做预处理:

  • 反转盐的字节/字符串
  • 取盐的部分字节(比如只取前8字节或后8字节)
  • 将盐视为十六进制字符串,先转成字节数组(比如16位的盐字符串如果是十六进制,实际对应8字节的盐)

4. 尝试链式哈希操作

测试多次哈希的情况:

  • 先哈希密码,再将哈希结果与盐组合后再次哈希
  • 先组合密码和盐,哈希后重复哈希N次(比如2次、3次)

5. 批量穷举常见模式

写一个简单的遍历工具,自动尝试所有常见参数组合(编码、顺序、迭代次数、固定字符串),一旦生成的哈希与目标匹配,即可确定逻辑。

内容的提问来源于stack exchange,提问作者kontrolltermin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:03:06