谁能帮忙看看,这个用来加密和解密的叫什么算法?大家都再用嘛?
function TForm1.encryptstr(const s:string; skey:string):string;
var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=myStrtoHex(s);
hexskey:=myStrtoHex(skey);
midS :=hexS;
for i:=1 to (length(hexskey) div 2) do
begin
if i <> 1 then midS:= tmpstr;
tmpstr:= ' ';
for j:=1 to (length(midS) div 2) do
begin
a:=strtoint( '$ '+midS[2*j-1]+midS[2*j]);
b:=strtoint( '$ '+hexskey[2*i-1]+hexskey[2*i]);
c:=a xor b;
tmpstr := tmpstr+myStrtoHex(chr(c));
end;
end;
result := tmpstr;
end;
function TForm1.decryptstr(const s:string; skey:string):string;
var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=s;//应该是该字符串
if length(hexS) mod 2=1 then
begin
showmessage( '密文错误! ');
exit;
end;
hexskey:=myStrtoHex(skey);
tmpstr :=hexS;
midS :=hexS;
for i:=(length(hexskey) div 2) downto 1 do
begin
if i <> (length(hexskey) div 2) then midS:= tmpstr;
tmpstr:= ' ';
for j:=1 to (length(midS) div 2) do
begin
a:=strtoint( '$ '+midS[2*j-1]+midS[2*j]);
b:=strtoint( '$ '+hexskey[2*i-1]+hexskey[2*i]);
c:=a xor b;
tmpstr := tmpstr+myStrtoHex(chr(c));
end;
end;
result := myHextoStr(tmpstr);
end;
[解决办法]
嗯,研究看看。
[解决办法]
function TForm1.encryptstr(const s:string; skey:string):string; // BB A
var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=myStrtoHex(s); //母串转为字符16进形式 4242
hexskey:=myStrtoHex(skey); //key串............. 41
midS :=hexS; // 4242
for i:=1 to (length(hexskey) div 2) do //1~2
begin
//if i <> 1 then midS:= tmpstr; //如果不是从头开始 复杂在这里。
tmpstr:= ' ';
for j:=1 to (length(midS) div 2) do //从母串16进的第一个“字节”开始循环 J++
begin
a:=strtoint( '$ '+midS[2*j-1]+midS[2*j]); //母串每个“字节”转为整型a 66 66
b:=strtoint( '$ '+hexskey[2*i-1]+hexskey[2*i]); //key串每个“字节”转为整型a 母串全部循环完,才右移key串 65
c:=a xor b; //异或 66 xor 65 == 3
tmpstr := tmpstr+myStrtoHex(chr(c)); //异或后转为字符并连接为返回字串 '03 ' + '03 '
end;
end;
result := tmpstr;
end;
[解决办法]
这种加解密方法很容易就被破解了。不过这算法好像很常见。具体叫什么名字就不知道了。有点像ACCESS数据库里用对密码的加密算法