就这几行代码,搞的我一头雾水,哪位大侠懂PHP,帮忙改成D版本的,万分感谢!!!!!!!!!!!!function encrypt($str, $key = '123456')
{
$coded = '';
$keylength = strlen($key); for ($i = 0, $count = strlen($str); $i < $count; $i += $keylength)
{
$coded .= substr($str, $i, $keylength) ^ $key;
} return str_replace('=', '', base64_encode($coded));
}
{
$coded = '';
$keylength = strlen($key); for ($i = 0, $count = strlen($str); $i < $count; $i += $keylength)
{
$coded .= substr($str, $i, $keylength) ^ $key;
} return str_replace('=', '', base64_encode($coded));
}
解决方案 »
- C++语言转为DELPHI语言 大家帮下忙.在线等
- 求个outlookbar控件
- 有没有delphi2009的基础教程的哦,我摸了半天觉得有点累呀。
- 怎样实现计算机的锁屏?要求能屏蔽ctr+alt+del,帮顶给分!
- File not found: 'TFlatPanelUnit.dcu'什么错误啊?
- 三层中怎样修改数据啊?
- 请教如何改变ListBox当前记录颜色的问题!(在线等待)
- 怎么判断一个Adoquery缓存中是否有数据?
- delphi控制AutoCAD
- 我现在37岁,想知道这里的人都多大?我在这里算不算是老翁啊?
- DBGrid ,ADOQuery 相关
- 我做管理类软件!用这个语言合适么?
var
coded string;
keylength :integer;
i :integer;
begin
Result := ''; coded :='';
keylength := = strlen(key);
i:=0;
while i<keylength do
begin
coded := coded + midstr(str, i, keylength) ^ key;
i:=i+keylength;
end;
end;
coded := coded + midstr(str, i, keylength) ^ key;
coded + midstr(str, i, keylength) xor key;
var
Coded :string;
KeyLength,i :integer;
begin
Result :='';
KeyLength := Length(Key);
i :=0;
while i<Length(Str) do
begin
Coded := Coded + (Copy(Str,i,KeyLength) xor Key);
i := i + KeyLength;
end;
Result := Replace(Base64_EnCode(Coded),'=',''); //Base64_Encode()在Delphi中没有现成的函数。
end;
Coded := Coded + (Copy(Str,i,KeyLength) xor Key);
Delphi里面,字符串是不能直接异或的,需要将字符串里面的每一个字符Ord(),然后进行异或。
function encrypt(str:string;key:string='123456'):string;
var
code:string;
xorresult,s:string;
keylength:integer;
i:integer;
count:integer;
j:integer;
begin
code:='';
keylength:=Length(key);
i:=1;
count:=Length(str)+1;//为啥米要加1,难道因为i是从1开始计数的?;
while (i<count) do
begin
if count-i<keylength then
keylength:=count-i;
setlength(xorresult,keylength);
for j:=1 to keylength do
begin
s:=copy(str,i,keylength);
xorresult[j]:=s[j];
xorresult[j]:=chr(ord(xorresult[j]) xor ord(key[j]));
end;
code:=code+xorresult;
i:=i+keylength;
end;
//EncodeString()函数来源于 encddecd 单元,用来将字符串编码为base64
//DecodeString()函数用来解码
result:=StringReplace(EncodeString(code),'=','',[rfReplaceAll, rfIgnoreCase]);
end;
function encrypt(str: AnsiString; key: AnsiString = '123456'): AnsiString;
var
coded, sXOR, sOne: AnsiString;
i, j, k, count, keylength: Integer;
begin
Result := '';
coded := '';
keylength := Length(key);
count := Length(str);
i := 1;
if keylength <= 0 then
Exit; while (i <= count) do
begin
if i + keylength - 1 > count then
keylength := count - i + 1; sOne := Copy(str, i, keylength);
sXOR := '';
SetLength(sXOR, keylength);
for j := 1 to keylength do
begin
sXOR[j] := sOne[j];
sXOR[j] := AnsiChar(Ord(sXOR[j]) xor Ord(key[j]));
end;
coded := coded + sXOR;
i := i + keylength;
end;
Result := StringReplace(EncodeString(coded), '=', '', [rfReplaceAll]); //EncodeString在EncdDecd单元中
end;