首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用字典和散列破解密码

使用字典和散列破解密码
EN

Stack Overflow用户
提问于 2018-01-13 05:09:05
回答 1查看 975关注 0票数 1

我正在为学校做一个关于安全和如何使用字典破解密码的作业。我们得到了六个散列密码、一个单词字典和一个salt散列值。其中三个密码没有加盐,我已经破解了。我找不到这三个加了盐的密码。

我将代码设置为遍历大型字典,对每个单词进行散列,然后与散列后的密码进行比较。我已经尝试将Salt值散列到我散列的每个单词的前面和/或后面,以进行比较,但我找不到任何匹配。我们使用三种不同的算法(MD-5、SHA-256和SHA-1)。我的程序检查密码散列的长度,并将其路由到需要用于破解的算法。

下面是我为加盐的MD-5密码运行的一个示例:

代码语言:javascript
复制
MessageDigest md = MessageDigest.getInstance("MD5");
           md.update((word + salt).getBytes());
        byte[] bytes = md.digest();
        StringBuffer sb = new StringBuffer();

        for (int i = 0; i < bytes.length; i++) {
            sb.append(Integer.toString((bytes[i] & 0xff) 
+ 0x100, 16).substring(1));
        }       

        return sb.toString();

"word“是要检查的密码," salt”是字符串中的salt十六进制。这将返回散列到for循环之后的值,该循环正在我的字典中查找匹配项。我不明白为什么它可以找到三个无盐版本,但将盐添加到前面(或后面)将不起作用。显然,我在这里误解了一些东西。任何清晰度都是非常感谢的。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-01-13 05:40:42

尝试如下所示:

代码语言:javascript
复制
MessageDigest md5 = MessageDigest.getInstance("MD5");
Base64.Encoder base64 = Base64.getEncoder();

ShadowRecord r = new ShadoRecord("username", "usedSalt", "hashedPassword");
if (test(r, "secret")) {
    System.out.println("Password is 'secret'");
}

public class ShadowRecord {
    public final String username;
    public final String salt;
    public final String hash; // result of hash(password + salt)

    public ShadowRecord(String username, String salt, String hash) {
        this.username = username;
        this.salt = salt;
        this.hash = hash;
    }
}

public boolean test(ShadowRecord r, String pwd) {
    String input = pwd + r.salt;
    String result = hash(input);
    return result.equals(r.hash);
}

// input = pwd + salt
public String hash(String input) {
    byte[] result =  md5.digest(pwd.getBytes(StandardCharsets.UTF_8));
    byte[] hash = base64.encode(result);
    return new String(hash, StandardCharsets.UTF_8);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48234024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档