Java HMAC解密

Java HMAC解密,java,encryption,base64,hmac,Java,Encryption,Base64,Hmac,我对HMAC解密进行了编码。我尝试了很多次来解密输出 这是我的密码 package javaapplication_HMAC; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import javax.crypto.Mac; import javax.crypto.spec.S

我对HMAC解密进行了编码。我尝试了很多次来解密输出

这是我的密码

package javaapplication_HMAC;

import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import com.sun.org.apache.xml.internal.security.utils.Base64;
import java.util.Formatter;

public class Encryption {

    public void Encryption_Base64(String x,String y){
     String message = x;
        String key = y;
        String algorithm = "HmacSHA1";  
        try {
            Mac sha256_hmac = Mac.getInstance(algorithm);
            SecretKeySpec secret_key = new SecretKeySpec(key.getBytes("UTF-8"), algorithm);
             sha256_hmac.init(secret_key);
            String hash = Base64.encode(sha256_hmac.doFinal(message.getBytes("UTF-8")));
            System.out.println(hash);
        } catch (NoSuchAlgorithmException | UnsupportedEncodingException | InvalidKeyException e) {
            e.printStackTrace();
        }    
    }

    public static void main(String args[]) {
        Encryption encryption_base64 = new Encryption();
        encryption_base64.Encryption_Base64("test", "123456");
    }

}
输出为:QFemksWe6HuyDAJIepZd+ldchzc=

有可能解密吗

TL;医生:没有

MAC函数也称为“键控哈希函数”。它不是任何意义上的“加密”。 它将密钥和纯文本转换为身份验证标记。相同的键+纯文本导致相同的标记,此属性用于检查纯文本是否未被修改

HMAC是一个基于散列函数的MAC,在您的例子中是SHA-256。只要哈希函数没有被破坏,即使您知道密钥,也无法恢复纯文本

如果只有一小部分可能的纯文本,您当然可以进行暴力攻击,只需使用键尝试每个纯文本,查看标记是否匹配。(如果密钥也是未知的,但来自一个小集合,您也可以尝试尝试所有可能的密钥。)

TL;医生:没有

MAC函数也称为“键控哈希函数”。它不是任何意义上的“加密”。 它将密钥和纯文本转换为身份验证标记。相同的键+纯文本导致相同的标记,此属性用于检查纯文本是否未被修改

HMAC是一个基于散列函数的MAC,在您的例子中是SHA-256。只要哈希函数没有被破坏,即使您知道密钥,也无法恢复纯文本


如果只有一小部分可能的纯文本,您当然可以进行暴力攻击,只需使用键尝试每个纯文本,查看标记是否匹配。(如果密钥也是未知的,但来自一个小集合,您也可以尝试尝试所有可能的密钥。)

可能重复的Heh,我们都有58.3k rep:)Heh,我们都有58.3k rep:)