程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 一個很簡單的加密算法

一個很簡單的加密算法

編輯:Delphi
當時見到一張帖子即興寫了這段代碼,還沒認真調試過

  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.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved