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;