Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Urgente! Cómo escribir la función de cifrado en PHP y usar Java para descifrarla

¡Urgente! Cómo escribir la función de cifrado en PHP y usar Java para descifrarla

PHP, JSP y Delphi son compatibles con algoritmos simples de cifrado y descifrado en varios idiomas. Actualmente, JSP no es compatible con el cifrado y descifrado chino. Espero que algún experto pueda ayudar a completarlo.

1. PHP necesita modificar ligeramente el código anterior de la siguiente manera:

$key = "admin"

tecla de funciónED($txt,$encrypt_key) {

$encrypt_key = md5($ encrypt_key

$ctr=0; ";

para ($i=0;$i

si ($ctr==strlen($encrypt_key)) $ctr =0;

$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);

$ctr++;

}

Devuelve $tmp;

}

función cifrar($ txt,$key){

srand(( double)microtime()*1000000);

$encrypt_key = md5(rand(0,32000));

$ctr=0; = "";

para ($i=0;$i

si ($ctr==strlen($encrypt_key)) $ctr=0;

$bbb=substr($encrypt_key,$ctr,1) .

(substr($txt,$i,1) ^ substr($encrypt_key, $ctr,1));

$tmp.= $bbb

$ctr++

}

return base64_encode(keyED); ($tmp,$clave));

}.

función descifrar($txt,$clave){

$txt=base64_decode($txt);

$txt = KEYED($txt,$clave

$tmp = "";

para ($i=0;$i);

$md5 = substr($txt,$i,1);

$i++

$tmp.= (substr($txt,$i,1) ^; $md5);

} $tmp.

Devuelve $tmp

}

$tmp.

$string = "¡hola mundo!";

// Cifra $string y guárdalo en $enc_text

$enc_text = encrypt($string,$key

//Descifra el texto cifrado $enc_text y guárdalo en $dec_text

$dec_text = decrypt($enc_text,$key);

echo "Cadena original: " $string."
";

echo "Cadena cifrada: ". $enc_text."
";

echo "Cadena descifrada: ". ."
"; >>p>

2. código jsp (clase java)

paquete com.intwork.struct.common ;

importar java. util.BASE64Decoder;

importar sun.misc.BASE64Encoder;

clase pública KeyED {

public char[ ] keyED(char[] cText, String encrype_key) {

encrype_key=MD5.

getInstance(encrype_key).encrypt();

int ctr=0;

char[] cEncrype_key=encrype_key .toCharArray();

char[] temp =nuevo carácter[cText.length];

int ind=0;

String tmp="";

for(int i=0;i< cText.length;i++ ){

if(ctr==cEncrype_key.length){

ctr=0;

}

temp[ind++]=(char)(cText[i] ^ cEncrype_key[ctr]);

ctr++

}

return temp;

}

cifrado de cadena pública (texto de cadena, clave de cadena){

Cadena encrype_key=MD5.getInstance(String. valueOf(new Random().nextInt(1000000) ).encrypt();

int ctr=0;

char[] cText=text.toCharArray();

char[] cEncrype_key= encrype_key. toCharArray();

char[] temp=new char[cText.length*2];

int ind=0;

String tmp="" ;

for(int i=0;i<. cText.length;i++){

if(ctr==cEncrype_key.length){

ctr= 0;

}

temp[ind++]=cEncrype_key[ctr];

temp[ind++]= (char)(cText[i]^cEncrype_key[ ctr]);

ctr++;

}

BASE64Encoder b = new sun.misc.BASE64Encoder();

return b. encode( new String(this.keyED(temp,key)).getBytes());

}

public String decrype(String text,String key)lanza una excepción{

}

p>

decodificador BASE64Decoder = nuevo BASE64Decoder();

texto=new String(decoder.decodeBuffer(texto));

char[] cText=text.toCharArray()

char[] temp=new char[cText.length/2]

int ind=0; p>

cText=this.KEYED(cText.length/2]);

cText=this.KEYED(cText.length/2);

cText=this.

KEYED(cText.length/2)

String tmp=""

for(int i=0;i

char md5=cText[i];

i++;

temp[ind++]=(char)(cText[i]^md5);

}

return new String( temp);

}

}

3. Código Delphi (solo código de cifrado, no código de descifrado.

Aquellos que estén interesados ​​pueden completarlo)

función Tfrmunmsgmain.EnPlugPwcrypt(str, skey: string): string;

//cifrar complemento con una cadena

var

IdEncoder64.TIdEncoderMIME;

sencrypt_key, stemp, stemp1 : cadena;

ictr, i : Entero;

ifirst, ilast : Integer ;

function enpwcrypt( str, skey: string): string;

//Obtiene la cadena cifrada

var

stemp, sencrypt_key : cadena;

ictr, i : Entero;

ifirst, ilast .Integer;

comenzar

intentar

resultado := '';

prueba

sencrypt_key := LowerCase(UMD5Crypt.UGetMd5Strr)UGetMd5Str(skey));

ictr := 1 ;

stemp := '';

para I := 1 hasta longitud(str) hacer

comenzar

if (ictr = length(sencrypt_key)) entonces

ictr := 1;

ifirst := Ord(midstr(str,i,1)[1]);

ilast := Ord(midstr(sencrypt_key,ictr,1)[1]);

stemp := stemp +

chr((ifirst) XOR (ilast) );

inc(ictr);

fin;

resultado := stemp;

excepto

fin;

excepto

fin;

//p>

fin;

comenzar

probar

resultado := '';

probar

IdEncoder64 := TIdEncoderMIME.Create(Aplicación);

sencrypt_key := LowerCase(UMD5Crypt.UGetMd5Str(inttostr((Random(100000)))));

ictr := 1;

stemp := '';

stemp1 := '';

for I := 1 to length(str) do

comenzar

if (ictr = length (sencrypt_key) ) entonces

ictr := 1;

ifirst := Ord(midstr(str,i,1)[1]);

ilast := Orden (midstr(sencrypt_key,ictr,1)[1]);

st

emp1 := midr( sencrypt_key,ictr,1) +

chr((ifirst) XOR (ilast));

stemp := stemp + stemp1

inc(ictr);

fin;

resultado := IdEncoder64.Encode(enpwcrypt(stemp, skey))

finalmente

freeandnil(IdEncoder64);

fin;

excepto

fin;

fin;

fin;