首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-03-08 
关于一个加密函数和算法问题!?急我想作一个简单的数字数据加密函数,但是在运行就是达不到效果,源码如下(测

关于一个加密函数和算法问题!?急
我想作一个简单的数字数据加密函数,但是在运行就是达不到效果,源码如下(测试用的源码)
{$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;

热点排行