gpt4 book ai didi

java - HMAC解密

转载 作者:行者123 更新时间:2023-12-01 19:50:10 25 4
gpt4 key购买 nike

我编写了 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函数也称为“键控哈希函数”。从任何意义上来说,它都不是“加密”。它将 key 和纯文本转换为身份验证标签。相同的 key +纯文本会产生相同的标签,该属性用于检查纯文本是否未被修改。

HMAC 是基于哈希函数(在您的例子中为 SHA-256)构建的 MAC。只要哈希函数没有被破坏,即使你知道 key ,你也无法取回明文。

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

关于java - HMAC解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51600957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com