¡Urgente! Cómo escribir la función de cifrado en PHP y usar Java para descifrarla
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: ". ." 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> } 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; p> 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;
";
";
"; >>p>