gpt4 book ai didi

java - 如何通过消息和生成的Mac计算 key

转载 作者:行者123 更新时间:2023-12-02 12:06:57 25 4
gpt4 key购买 nike

我想知道是否有办法通过消息和对消息应用解密算法(SHA1)生成的 MAC 和 key 来获取 key ,但 key 不知道它,我该怎么办?我有一个随机计算MAC的例子,如下:

public class MACApp {
public static void main(String[] args) {
//if(args.length < 1) System.out.println("Úsese MACApp \"hola\"");
//else performMACTest(args[0]);
performMACTest("Hola");
}

public static void performMACTest(String s) {
try {
// Elegimos el algoritmo de hashing

String alg = "HmacMD5";
// Creamos un objeto Mac que implementa el algoritmo especificado
Mac mac = Mac.getInstance(alg);
// Construimos un genrador de claves privadas
KeyGenerator generador = KeyGenerator.getInstance(alg);
// Creamos una clave privada con el generador de claves

SecretKey clavePrivada = generador.generateKey();
mac.init(clavePrivada);
// Pasamos la cadena de caracteres a un array de bytes y lo procesamos
// con el algoritmo del Mac, es decir, procesamos (de manera indirecta) el
// string que hemos pasado como parámetro
mac.update(s.getBytes());
// Indicamos que ya hemos acabado y recogemos el resultado
byte[] b = mac.doFinal();
System.out.println("\nMensaje original: " + s);
System.out.println("\nMAC :" + Conversor.aCadenaDeHexadecimales(b));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

class Conversor {
public static String[] digitos =
{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};

public static String aCadenaDeHexadecimales(byte[] array) {
String cadena = "";
for (int i = 0; i < array.length; i++)
cadena = cadena + convertirUno(array[i]);
return cadena;
}

private static String convertirUno(byte valor) {
int n = valor;
if (n < 0) n = 256 + n;
int d1 = n / 16;
int d2 = n % 16;
return digitos[d1] + digitos[d2];
}
}

如果有人我可以帮助找到 key 。我举个例子:

Message: 231456789 487654 500

MAC: 5807a9647ed99e98b8d197e608c1de8bcffa571f

加密/解密的哈希类型是SHA1, key 的大小是24位,即必须有3个字符。

最佳答案

获得 key 就像为攻击者找到了 chalice ;如果你得到了 key ,那么由该 key 加密或保护的所有内容基本上都会被破坏。因此,尽管密码和其他原语(例如用于哈希函数的原语)存在许多问题,但获取 key 通常是不可能的。

HMAC 建立在安全的单向哈希函数之上。由于该函数是一种方法,因此如果不暴力破解它,就不可能检索键值。即使对于 HMAC-MD5 和 HMAC-SHA1 也是如此 - 即基于很大程度上损坏的哈希函数构建的 MAC 函数。

你可以尝试直到世界末日,但你将无法取回 key - 也无法取回 chalice 。

关于java - 如何通过消息和生成的Mac计算 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46837313/

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