读书人

关于一个加密函数和算法有关问题!

发布时间: 2012-03-08 13:30:13 作者: rapoo

关于一个加密函数和算法问题!?急
我想作一个简单的数字数据加密函数,但是在运行就是达不到效果,源码如下(测试用的源码)
{$R *.dfm}
function chartonum(const valus:integer):char; //加密函数
begin
case valus of
1:result:=chr(valus+64);
2:result:=chr(valus+70);
3:result:=chr(valus+72);
4:result:=chr(valus+58);
5:result:=chr(valus+83);
6:result:=chr(valus+67);
7:result:=chr(valus+75);
8:result:=chr(valus+78);
9:result:=chr(valus+80);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
tstr:string;
begin
tstr:= ' ';
for i:=1 to length(edit1.Text) do
begin
tstr:=chartonum(strtoint(copy(edit1.Text,i,1)));
tstr:=tstr+tstr;
end;
edit2.Text:=tstr;
end;
end.
问题是我想借tstr来累加起来赋值到edit2中显示在edit1中输入数字后的加密情况,如edit1中输入‘12345’,本在edit2中就显示“AHK> X”可是现在只显示最后一个“XX”,也就是讲tstr:=tstr+tstr;并没有累加上去。不知这种算法是怎样的写,同时反过来解码的函数试了几次都编译不过,有高人能否指点一二

解密函数
function numtochar(const nstr:string):integer;
begin
if nstr= 'A ' then
result:=strtoint(nstr-64);
if nstr= 'H ' then
result:=strtoint(nstr-70);
....
end;


[解决办法]
tstr:=tstr+tstr;

晕倒。。

另外定义一个字符串吧。比如。strSum
strSum:=strSum+tstr;

[解决办法]
你的这种加解密属于查表法, 帮你改了一下, 代码很简单, 不解释了, 就请你自己去理解了:

const
KeyList = 'AHK> XIRVY ';

function Encrypt(AString: String): String;
var
iLoop : Integer;
begin
Result := ' ';
for iLoop := 1 to Length(AString) do
if AString[iLoop] in [ '1 '.. '9 '] then
Result := Result + KeyList[Ord(AString[iLoop]) - Ord( '0 ')];
end;

function DeEncrypt(AString: String): String;
var
iLoop : Integer;
iPos : Integer;
begin
Result := ' ';
for iLoop := 1 to Length(AString) do
begin
iPos := Pos(AString[iLoop], KeyList);
if iPos > 0 then Result := Result + Chr(iPos + Ord( '0 '));
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := Encrypt(Edit1.Text);
ShowMessage(DeEncrypt(Edit2.Text));
end;

读书人网 >.NET

热点推荐