delphi des加密 delphi实现DES字节流加密,该怎么解决
delphi实现DES字节流加密,该怎么解决
在 CnPack 提供的源代码包里,提供了 des 加解密单元文件,提供了以下四个功能函数:
function DESEncryptStr(Str, Key: AnsiString): AnsiString
{* 传入明文与加密 Key,DES 加密返回密文,
注:由于密文可能含有扩展 ASCII 字符,因此在 DELPHI 2009 或以上版本中,请用
AnsiString 类型的变量接收返回值,以避免出现多余的 Unicode 转换而导致解密出错}
function DESDecryptStr(Str, Key: AnsiString): AnsiString
{* 传入密文与加密 Key,DES 解密返回明文}
function DESEncryptStrToHex(Str, Key: AnsiString): AnsiString
{* 传入明文与加密 Key,DES 加密返回转换成十六进制的密文}
function DESDecryptStrFromHex(StrHex, Key: AnsiString): AnsiString
{* 传入十六进制的密文与加密 Key,DES 解密返回明文}
delphi 如何进行密码加密
Procedure CloseOpenKey(Var Source:String const ch: char)var i: integerbegin for i 1 to length(Source) do begin Source :=Char(Ord(Source ) xor (ord(ch))) endend//对source加密运行两次就解开了。
Delphi加密算法
我用的加密解密 function EncryptString(Source, Key: string): string //对字符串加密(Source:源 Key:密匙) var KeyLen: integer KeyPos: integer Offset: integer Dest: string SrcPos: integer SrcAsc: integer Range: integer begin KeyLen := Length(Key) if KeyLen = 0 then Key := delphi KeyPos := 0 Range := 256 randomize Offset := random(Range) Dest := format(%1.2x, [Offset]) for SrcPos := 1 to Length(Source) do begin SrcAsc := (Ord(Source[SrcPos]) Offset) mod 255 if KeyPos lt KeyLen then KeyPos := KeyPos 1 else KeyPos := 1 SrcAsc := SrcAsc xor Ord(Key[KeyPos]) Dest := Dest format(%1.2x, [SrcAsc]) Offset := SrcAsc end result := Dest end function UnEncryptString(Source, Key: string): string //对字符串解密(Src:源 Key:密匙) var KeyLen: integer KeyPos: integer Offset: integer Dest: string SrcPos: integer SrcAsc: integer TmpSrcAsc: integer begin KeyLen := Length(Key) if KeyLen = 0 then Key := delphi KeyPos := 0 Offset := strtoint($ copy(Source, 1, 2)) SrcPos := 3 repeat SrcAsc := strtoint($ copy(Source, SrcPos, 2)) if KeyPos lt KeyLen then KeyPos := KeyPos 1 else KeyPos := 1 TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]) if TmpSrcAsc lt= Offset then TmpSrcAsc := 255 TmpSrcAsc - Offset else TmpSrcAsc := TmpSrcAsc - Offset Dest := Dest chr(TmpSrcAsc) Offset := SrcAsc SrcPos := SrcPos 2 until SrcPos gt= Length(Source) result := Dest end