當前位置:編程學習大全網 - 源碼下載 - 急! php寫的加密函數如何用java解密

急! php寫的加密函數如何用java解密

php,jsp,delphi多語言兼容的簡單的加密解密算法,jsp目前暫時沒有實現中文的加密解密兼容。希望哪路高手能幫忙補上。

1,php的需要對以上代碼稍加修改,內容如下:

<?php

$key = "admin";

function keyED($txt,$encrypt_key) {

$encrypt_key = md5($encrypt_key);

$ctr=0;

$tmp = "";

for ($i=0;$i<strlen($txt);$i++){

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

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

$ctr++;

}

return $tmp;

}

function encrypt($txt,$key){

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

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

$ctr=0;

$tmp = "";

for ($i=0;$i<strlen($txt);$i++){

if ($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,$key));

}

function decrypt($txt,$key){

$txt=base64_decode($txt);

$txt = keyED($txt,$key);

$tmp = "";

for ($i=0;$i<strlen($txt);$i++){

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

$i++;

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

}

return $tmp;

}

$string = "hello world!";

// encrypt $string, and store it in $enc_text

$enc_text = encrypt($string,$key);

// decrypt the encrypted text $enc_text, and store it in $dec_text

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

echo "原字符串: ".$string."<br/>";

echo "加密字符串: ".$enc_text."<br/>";

echo "解密字符串: ".$dec_text."<br/>";

>

2,jsp代碼(java類)

package com.intwork.struct.common;

import java.util.Random;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

public class 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=new char[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;

}

public String encrype(String text,String key){

String 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)throws Exception{

BASE64Decoder decoder = new BASE64Decoder();

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

char[] cText=text.toCharArray();

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

int ind=0;

cText=this.keyED(cText, key);

String tmp="";

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

char md5=cText[i];

i++;

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

}

return new String(temp);

}

}

3,delphi代碼(只有加密代碼,沒寫解密代碼。有興趣的可以給補上)

function Tfrmunmsgmain.EnPlugPwcrypt(str, skey: string): string;

//加密插件用的字符串

var

IdEncoder64: TIdEncoderMIME;

sencrypt_key, stemp, stemp1 : string;

ictr, i : Integer;

ifirst, ilast : Integer;

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

//獲取加密後的字符串

var

stemp, sencrypt_key : string;

ictr, i : Integer;

ifirst, ilast : Integer;

begin

try

result := '';

try

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

ictr := 1;

stemp := '';

for I := 1 to length(str) do

begin

if (ictr = length(sencrypt_key)) then

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);

end;

result := stemp;

except

end;

except

end;

//

end;

begin

try

result := '';

try

IdEncoder64 := TIdEncoderMIME.Create(Application);

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

ictr := 1;

stemp := '';

stemp1 := '';

for I := 1 to length(str) do

begin

if (ictr = length(sencrypt_key)) then

ictr := 1;

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

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

stemp1 := midstr(sencrypt_key,ictr,1) +

chr((ifirst) XOR (ilast));

stemp := stemp + stemp1;

inc(ictr);

end;

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

finally

freeandnil(IdEncoder64);

end;

except

end;

end;

  • 上一篇:Python其實簡單易上手,這70個Python 實戰項目
  • 下一篇:世紀江湖的新手指南
  • copyright 2024編程學習大全網