如何在Java中解密sha1加密的String

Ser*_*gey 8 java encryption hash cryptography sha1

是否有可能解密之前使用Java中的SHA-1算法加密的字符串?

Rei*_*ica 12

SHA1是一个加密哈希函数,整个观点是你无法撤消它.如果可以反转哈希(找到给定哈希的输入),那么它就没用了.如果您需要加密某些内容并稍后解密,则应使用AESRSA加密功能.

但是,对于非常简单的输入,可以通过猜测输入是什么并检查散列是否相同来破解散列函数.

示例Python代码:

def crack_hash(hash_to_crack, hash_function, list_of_guesses):
    # Try to hash everything in our guess list
    for guess in list_of_guesses:
        new_hash = hash_function(guess)
        # if the hashes match, we found it
        if new_hash == hash_to_crack:
            return guess
    # If none of them match, give up
    return None
Run Code Online (Sandbox Code Playgroud)

当然,如果你真的想要有效地破解哈希,使用像开膛手Hashcat这样软件可能是你最好的选择.请注意,这通常适用于密码,因为它们很短且易于猜测,但随着输入的增加,难度会呈指数增长.您可以在几分钟内使用6个字符的输入来破解每个SHA-1哈希,而使用16个字符破解一个则平均需要数万亿年.