一个很简单的加密算法

  • 来源: 互联网 作者: rocket   2008-03-20/14:03
  • program Project1;

    {$APPTYPE CONSOLE}

    uses
      SysUtils;

    const
      Key=´TESTNET´;
      Cryptograph=´有些事还是不知为妙´;

    //不能为0.5,相加为1
      Percent1=0.21;
      Percent2=0.79;

    var
      s1:string;
    function GetKey(aKey:string;aPercent:Double):string;
    var
      i:integer;
    begin
      SetLength(Result,Length(aKey));
      for i:=1 to Length(aKey) do
      begin
        Result[i]:=Chr(Round(Ord(aKey[i])*aPercent));
      end;
    end;

    function EnCode(aCryptograph,aKey:string):string;
    var
      i,keylen,codelen:integer;
    begin
      keylen:=Length(akey);
      codelen:=Length(aCryptograph);
      SetLength(Result, Length(aCryptograph));
      for i:=1 to codelen do
      begin
        Result[i]:=Chr(Ord(aCryptograph[i])+Ord(aKey[(i mod KeyLen)+1]));
      end;
    end;

    function DeCode(aCryptograph,aKey:string):string;
    var
      i,keylen,codelen:integer;
    begin
      keylen:=Length(akey);
      codelen:=Length(aCryptograph);
      SetLength(Result, Length(aCryptograph));
      for i:=1 to codelen do
      begin
        Result[i]:=Chr(Ord(aCryptograph[i])-Ord(aKey[(i mod KeyLen)+1]));
      end;
    end;

    begin
      { TODO -oUser -cConsole Main : Insert code here }

      WriteLn(´要加密的文字´);
      WriteLn(Cryptograph);
      WriteLn;

      WriteLn(´密码经过第一个网络´);
      s1:=EnCode(Cryptograph,GetKey(Key,Percent1));
      WriteLn(s1);
      WriteLn;

      WriteLn(´密码经过第二个网络´);
      s1:=EnCode(s1,GetKey(Key,Percent2));
      WriteLn(s1);
      WriteLn;

      WriteLn(´还原´);
      s1:=DeCode(s1,Key);
      WriteLn(s1);
      WriteLn;
      WriteLn(´如果要在VCL控件中显示,还要对#0进行处理,´+
               ´因为VCL中大部分函数以#0作为结束标记´);
      ReadLn;
    end.



    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多