Red de conocimiento informático - Conocimiento informático - Código fuente de descifrado de contraseña

Código fuente de descifrado de contraseña

// DES en lenguaje C usa el modo ECB, sin relleno.

//Entonces el lado de Java debe corresponder. ¿Tu nombre claro es Liu Biao?

//Además, DES ya no es seguro. Si se puede cambiar a 3DES o AES.

Clase pública LearnDes {

Public static void main(String[] args) {

Pruebe {

System.out.println (cifrar("Liu Biao", "12345678 "));

sistema fuera . >} catch(Exception e) {

e . printstacktrace();

}

}

Cifrado de cadena estática pública ( Cadena mensaje, clave de cadena) genera una excepción {

//Cipher Cipher = Cipher .getinstance(" DES/CBC/pkcs 5 padding "); " DES/ECB/no padding ");

deskey spec dekey spec = new dekey spec(key . getbytes(" UTF-8 "));

secretkey factory key factory = secretkey factory . getinstance(" DES ");

clave secreta clave secreta = key factory . generar secreto(deskey spec);

IvParameterSpec iv = new IvParameterSpec(key . getbytes(" UTF-8 "));

//cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);

cipher.init(contraseña.

ENCRYPT_MODE, secretKey);

Volver a exstring(cipher . do final(message . getbytes(" UTF-8 "));

}

Público estático El descifrado de cadenas (mensaje de cadena, clave de cadena) genera una excepción {

byte[]bytes RC = convertHexString(mensaje);

//Cipher Cipher = Cipher( " DES/CBC . /pkcs 5 padding ");

cipher cipher = cipher . getinstance(" DES/ECB/no padding ");

deskey spec dekey spec = nueva especificación dekey (key . getbytes (" UTF-8 "));

fábrica de claves secretas fábrica de claves = fábrica de claves secretas . getinstance(" DES ");

clave secreta clave secreta = fábrica de claves . spec);

IvParameterSpec iv = new IvParameterSpec(key . getbytes(" UTF-8 "));

//cipher.init(Cipher.DECRYPT_MODE, secretKey , iv);

cipher.init(contraseña. DECRYPT_MODE, secretKey);

byte[]ret byte = cipher. do final(bytes RC);

Devuelve nueva cadena (byte ret);

}

byte estático público[]convertHexString(String ss){

byte digest[] = nueva sección de palabra [ss . ()/2];

for(int I = 0;i<digest.lengthi++) {

cadena byteString = ss substring(2 * I, 2 * I+2);

valor de byte int = entero. analizar int(cadena de bytes, 16);

digest[I]=(byte)valor de byte;

}

Resumen de retorno;

}

Cadena estática pública toHexString(byte b[]) {

búfer de cadena cadena hexadecimal = nuevo búfer de cadena( );

for(int I = 0; i & ltb . length; i++) {

cadena texto plano = entero . hexstring(0x ff &b[I]);

if(texto sin formato . length()<2)

texto sin formato = "0" + texto sin formato;

hexString.append(texto sin formato);

}

Devuelve cadena hexadecimal . tostring();

}

}