library StrEntry;
uses
SysUtils,
Classes;
{$R *.res}function myStrtoHex(s: string): string;var tmpstr:string;
i:integer;
begin
tmpstr := '';
for i:=1 to length(s) do
begin
tmpstr := tmpstr + inttoHex(ord(s[i]),2);
end;
result := tmpstr;
end;function myHextoStr(S: string): string;var hexS,tmpstr:string;
i:integer;
a:byte;
begin
hexS :=s;//应该是该字符串
if length(hexS) mod 2=1 then
begin
hexS:=hexS+'0';
end;
tmpstr:='';
for i:=1 to (length(hexS) div 2) do
begin
a:=strtoint('$'+hexS[2*i-1]+hexS[2*i]);
tmpstr := tmpstr+chr(a);
end;
result :=tmpstr;
end;function encryptstr(const s:string; skey:string;tmpstr:string):integer;var
i,j: integer;
hexS,hexskey,midS: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 := 1;
end;function decryptstr(const s:string; skey:string;tmpstr:string):integer;var
i,j: integer;
hexS,hexskey,midS:string;
a,b,c:byte;
begin
hexS :=s;//应该是该字符串
if length(hexS) mod 2=1 then
begin
// showmessage('密文错误!');
result:=-1;
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;
tmpstr:=myHextoStr(tmpstr);
result:=1;
end;exports encryptstr,
decryptstr;
beginend.
uses
SysUtils,
Classes;
{$R *.res}function myStrtoHex(s: string): string;var tmpstr:string;
i:integer;
begin
tmpstr := '';
for i:=1 to length(s) do
begin
tmpstr := tmpstr + inttoHex(ord(s[i]),2);
end;
result := tmpstr;
end;function myHextoStr(S: string): string;var hexS,tmpstr:string;
i:integer;
a:byte;
begin
hexS :=s;//应该是该字符串
if length(hexS) mod 2=1 then
begin
hexS:=hexS+'0';
end;
tmpstr:='';
for i:=1 to (length(hexS) div 2) do
begin
a:=strtoint('$'+hexS[2*i-1]+hexS[2*i]);
tmpstr := tmpstr+chr(a);
end;
result :=tmpstr;
end;function encryptstr(const s:string; skey:string;tmpstr:string):integer;var
i,j: integer;
hexS,hexskey,midS: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 := 1;
end;function decryptstr(const s:string; skey:string;tmpstr:string):integer;var
i,j: integer;
hexS,hexskey,midS:string;
a,b,c:byte;
begin
hexS :=s;//应该是该字符串
if length(hexS) mod 2=1 then
begin
// showmessage('密文错误!');
result:=-1;
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;
tmpstr:=myHextoStr(tmpstr);
result:=1;
end;exports encryptstr,
decryptstr;
beginend.
解决方案 »
- 用delphi编写了一个WIN FORM程序,如何让该程序在一台机器上只能运行一个实例?
- 送分求解答两条笔试题目
- 禁止拷贝
- SMTP中有提到8BITMIME, 难道还有不同的MIME?
- d6+sql2000+ado打包为什么在98下老是找不到数据库连接?
- 急!关于开发考勤管理系统!
- 自己写的initialization和finalization应放在程序的什么部分?
- 急聘delphi+sqlServer , 实际工作经验一年以上。学历无要求 。年龄无要求。
- F1book的用法,谁可以给个例子?
- 哪里有中英文朗读的免费控件(含库)或DLL下载?
- Indy 入门在线等
- 用delphi写的安装程序怎么在添加删除程序里面出现?
function decryptstr(const s:string; skey:string):Pchar; stdcall;var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=s;//应该是该字符串
// if length(hexS) mod 2=1 then
// begin
// 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 := Pchar(myHextoStr(tmpstr));
end;