我是新手,我想把输入的密码加密后放到数据库里去,而且这个加密是单向的,只能加密,不能解密,怎么可以做到啊

解决方案 »

  1.   

    typeTDynByteArray = array of byte;constSeedA = 5678; /// 常量,你可以修改SeedB = 5432; /// 常量,你可以修改/// 对数组加密function Crypt(const s: TDynByteArray; Key: Word; const bEncrypt: boolean = true): TDynByteArray; overload;vari : integer;beginSetLength(Result, Length(s));for i := Low(s) to High(s) dobeginResult[i] := s[i] xor (key shr 8);if bEncrypt thenKey := (Result[i] + key) * SeedA + SeedBelseKey := (s[i] + Key) * SeedA + SeedB;end;end;/// 字符串function Crypt(const s: string; Key: Word; const bEncrypt: boolean = True): string; overload;vari : integer;ps, pr : ^byte;beginSetLength(Result, Length(s));ps := @s[1];pr := @Result[1];for i := 1 to length(s) dobeginpr^ := ps^ xor (Key shr 8);if bEncrypt thenKey := (pr^ + Key) * SeedA + SeedBelseKey := (ps^ + Key) * SeedA + SeedB;pr := pointer(integer(pr) + 1);ps := pointer(integer(ps) + 1);endend;/// 也可以对记录进行加密,只要把TResultData改成你的记录类型即可!!!!!!function Crypt(const s: TResultData; Key: Word; const bEncrypt: boolean = True): TResultData; overload;vari : integer;ps, pr : ^byte;beginps := @s;pr := @Result;for i := 1 to SizeOf(s) dobeginpr^ := ps^ xor (Key shr 8);if bEncrypt thenKey := (pr^ + Key) * SeedA + SeedBelseKey := (ps^ + Key) * SeedA + SeedB;pr := pointer(integer(pr) + 1);ps := pointer(integer(ps) + 1);end;end;***************************function cryptstr(const s:string; stype: dword):string;vari: integer;fkey: integer;beginresult:='';case stype of0:beginrandomize;fkey := random($ff);for i:=1 to length(s) doresult := result+chr( ord(s[i]) xor i xor fkey);result := result + char(fkey);end;1:beginfkey := ord(s[length(s)]);for i:=1 to length(s) - 1 doresult := result+chr( ord(s[i]) xor i xor fkey);end;end;
      

  2.   

    直接加密和解密算法{*******************************************************}
    {                                                       }
    {  Decrypt                                              }
    {                                                       }
    {  bitwise compare of each characters XOR 27            }
    {                                                       }
    {  Return string which after bitwise compare            }
    {                                                       }
    {*******************************************************}
    function Decrypt(s: string; Key: Integer = 27): string;
    var
      i: Integer;
    begin
      Result := s;
      for i := 1 to Length(s) do
        Result[i] := Chr(Ord(s[i]) xor Key);
    end;{*******************************************************}
    {                                                       }
    {  Encrypt                                              }
    {                                                       }
    {  Call again Decrypt to back to origin                 }
    {                                                       }
    {  Return string which after bitwise compare            }
    {                                                       }
    {*******************************************************}
    function Encrypt(s: string; Key : Integer =27): string;
    begin
      Result := Decrypt(s, Key);
    end;学习下
      

  3.   

    这是我昨天刚写的,加密算法很简单,要用复杂的算法就要看你想象力了
    unit interfacedll;interfacefunction ReadPassword(target:string):string;
    function WritePassword(source:string):string;implementation
    function ReadPassword(target:string): string;
    var
      s:string[20];
      i:byte;
    begin
      setlength(s,length(target));
      for i:=1 to length(target) do
        s[i]:=chr(ord(target[i])-ord('a'));
      result:=s;
    end;function WritePassword(source:string): string;
    var
      t:string[20];
      i:byte;
    begin
      setlength(t,length(source));
      for i:=1 to length(source) do
        t[i]:=chr(ord(source[i])+ord('a'));
      result:=t;
    end;end.