Red de conocimiento informático - Aprendizaje de programación - Código fuente de cambio de contraseña de Java

Código fuente de cambio de contraseña de Java

// 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 (ret byte);

}

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

byte digest[] = nuevo byte[ss length()/2];

para. (int I = 0; iltdigest.lengthi) {

string byteString = ss. substring(2 * I, 2 * I 2);

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

resumen[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 . longitud; i ) {

cadena texto plano = entero . )

Texto plano = "0" texto plano;

hexString.append(texto plano);

}

Devuelve cadena hexadecimal astring(. );

}

}