No puedes incluir de esa manera librerias no adaptadas a la interfaz nativa, te recomiendo que busques un homólogo para java.
Saludos
Saludos
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: egyware en 30 Agosto 2010, 05:36 AMPues dependeria mucho de tu ordenador, y del algoritmo en si, además este es inutil si no conoces la longitud de la cadena pasada a hash.
Asi de ser pesado, solo para molestar pero también dejando una propuesta para mejorar el conocimiento.
Me gustaria saber mucho de que complejidad son los algoritmos presentados aqui en función del largo de la cadena que se desea obtener por ejemplo.
Esto es util ya que si quiero desencryptar un MD5 cuanto tiempo me tomara a priori sin a ejecutar tal algoritmo.
Espero que me respondan.
Saludos
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package funcional;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author debci
*/
public class Generador {
private char[] mapaChars;
private boolean acabado = false;
private Generador(int ArgCount, char[] ArgAlpha) {
mapaChars = ArgAlpha;
}
public static void main(String[] args) {
Generador generador = new Generador();
generador.getAllCombo();
}
private Generador() {
}
public void getAllCombo() {
String resultado = null;
String match = "79661ff25e39af70fc48d7785f587e89";
char[] mapaChars = {'A','B','C','D','E','F',' '};
int longitud = 7;
BigInteger largo = BigInteger.valueOf(mapaChars.length);
BigInteger posibles = largo.pow(longitud);
System.out.println("[!]Hay " + posibles + " combinaciones posibles.");
char[] combinacion = new char[longitud];
int[] indice = new int[longitud];
while(!acabado)
{
try{
for(int x = 0; x < indice.length; x++) {
if(!(x==(indice.length))) {
if((indice[x] == (mapaChars.length))) {
indice[x] = 0;
indice[x+1]++;
}
}else{
indice[x] = 0;
}
}
//Asignamos la combinación numérica al vector de caracteres
for(int h = 0; h < longitud; h++) {
combinacion[h] = mapaChars[indice[h]];
}
char[] resultadoTemporal = new char[longitud];
for(int j = 0; j < combinacion.length; j++) {
resultadoTemporal[j] = combinacion[j];
}
String resultadoFinal = new String(resultadoTemporal);
String cadenaFormateada = new String();
/* Formateamos la cadena quitandole los espacios existentes para */
/* generar todas las formas posibles */
for (int x = 0; x < resultadoFinal.length(); x++) {
if (resultadoFinal.charAt(x) != ' ') {
cadenaFormateada += resultadoFinal.charAt(x);
}
}
String resultadoEncriptado = new String(this.encriptaMD5(cadenaFormateada));
System.out.println(cadenaFormateada + " =======> " + resultadoEncriptado);
if(resultadoEncriptado.equals(match))
{
resultado = resultadoTemporal.toString();
System.out.println("Hash crackeada con exito!\n" + resultadoFinal);
break;
}
indice[0]++;
//System.out.println("[!]Quedan " + posibles + " combinaciones.");
if(posibles.equals(BigInteger.ONE)) {
acabado = true;
}
posibles = posibles.subtract(BigInteger.ONE);
}catch(ArrayIndexOutOfBoundsException e){
}
}
}
public static String encriptaMD5(String toEnc)
{
MessageDigest mdEnc = null;
try {
mdEnc = MessageDigest.getInstance("MD5"); // Encryption algorithm
} catch (NoSuchAlgorithmException ex) {
System.err.println("No se ha encontrado el algoritmo.");
}
mdEnc.update(toEnc.getBytes(), 0, toEnc.length());
String md5 = new BigInteger(1, mdEnc.digest()).toString(16);
return md5;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package funcional;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author debci
*/
public class Generador {
private char[] mapaChars;
private boolean acabado = false;
private Generador(int ArgCount, char[] ArgAlpha) {
mapaChars = ArgAlpha;
}
public static void main(String[] args) {
Generador generador = new Generador();
generador.getAllCombo();
}
private Generador() {
}
public void getAllCombo() {
String resultado = null;
String match = "79661ff25e39af70fc48d7785f587e89";
char[] mapaChars = {'A','B','C','D','E','F','\0'};
int longitud = 7;
BigInteger largo = BigInteger.valueOf(mapaChars.length);
BigInteger posibles = largo.pow(longitud);
System.out.println("[!]Hay " + posibles + " combinaciones posibles.");
char[] combinacion = new char[longitud];
int[] indice = new int[longitud];
while(!acabado)
{
try{
for(int x = 0; x < indice.length; x++) {
if(!(x==(indice.length))) {
if((indice[x] == (mapaChars.length))) {
indice[x] = 0;
indice[x+1]++;
}
}else{
indice[x] = 0;
}
}
for(int h = 0; h < longitud; h++) {
combinacion[h] = mapaChars[indice[h]];
}
char[] resultadoTemporal = new char[longitud];
for(int j = 0; j < combinacion.length; j++) {
resultadoTemporal[j] = combinacion[j];
}
String resultadoFinal = new String(resultadoTemporal);
String resultadoEncriptado = new String(this.encriptaMD5(resultadoFinal));
System.out.println(resultadoFinal + " =======> " + resultadoEncriptado);
if(resultadoEncriptado.equals(match))
{
resultado = resultadoTemporal.toString();
System.out.println("Hash crackeada con exito!\n" + resultadoFinal);
break;
}
indice[0]++;
//System.out.println("[!]Quedan " + posibles + " combinaciones.");
if(posibles.equals(BigInteger.ONE)) {
acabado = true;
}
posibles = posibles.subtract(BigInteger.ONE);
}catch(ArrayIndexOutOfBoundsException e){
}
}
}
public static String encriptaMD5(String toEnc)
{
MessageDigest mdEnc = null;
try {
mdEnc = MessageDigest.getInstance("MD5"); // Encryption algorithm
} catch (NoSuchAlgorithmException ex) {
System.err.println("No se ha encontrado el algoritmo.");
}
mdEnc.update(toEnc.getBytes(), 0, toEnc.length());
String md5 = new BigInteger(1, mdEnc.digest()).toString(16);
return md5;
}
}
import java.lang.String;
import java.math.BigInteger;
import java.security.MessageDigest;root
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Debci
*/
public class Encriptor {
public static void main(String[] args)
{
String resultado = null;
String match = "79661ff25e39af70fc48d7785f587e85";
char[] mapaChars = {'A','B','C','D'};
int longitud = 3;
int posibles = (int) Math.pow(longitud,mapaChars.length);
char[] combinacion = new char[longitud];
int[] indice = new int[longitud];
for(int i = 0; i < posibles;i++)
{
for(int x = 0; x < indice.length; x++) {
if(!(x==indice.length)) {
if(indice[x] == mapaChars.length) {
indice[x] = 0;
indice[x+1]++;
}
}else{
indice[x] = 0;
}
}
for(int h = 0; h < longitud; h++) {
combinacion[h] = mapaChars[indice[h]];
}
char[] resultadoTemporal = new char[longitud];
for(int j = 0; j < combinacion.length; j++) {
resultadoTemporal[j] = combinacion[j];
}
//System.out.println(resultadoTemporal);
String resultadoFinal = new String(resultadoTemporal);
String resultadoEncriptado = new String(Encriptor.encriptaMD5(resultadoFinal));
if(resultadoEncriptado.equals(match))
{
resultado = resultadoTemporal.toString();
System.out.println("Hash crackeada con exito!\n" + resultadoFinal);
break;
}
char[] mapaChars = {'A','B','C','D'};
int longitud = 3;