Шифрование файлов, строк и памятиDelphi , Синтаксис , ШифрованиеШифрование файлов, строк и памяти
Оформил: DeeCo unit EZCrypt; {modeled by Ben Hochstrasser(bhoc@surfeu.ch) after some code snippet from borland} interface uses Windows, Classes; type TWordTriple = Array[0..2] of Word; function FileEncrypt(InFile, OutFile: String; Key: TWordTriple): boolean; function FileDecrypt(InFile, OutFile: String; Key: TWordTriple): boolean; function TextEncrypt(const s: string; Key: TWordTriple): string; function TextDecrypt(const s: string; Key: TWordTriple): string; function MemoryEncrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean; function MemoryDecrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean; implementation function MemoryEncrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean; var pIn, pOut: ^byte; i : Cardinal; begin if SrcSize = TargetSize then begin pIn := Src; pOut := Target; for i := 1 to SrcSize do begin pOut^ := pIn^ xor (Key[2] shr 8); Key[2] := Byte(pIn^ + Key[2]) * Key[0] + Key[1]; inc(pIn); inc(pOut); end; Result := True; end else Result := False; end; function MemoryDecrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean; var pIn, pOut: ^byte; i : Cardinal; begin if SrcSize = TargetSize then begin pIn := Src; pOut := Target; for i := 1 to SrcSize do begin pOut^ := pIn^ xor (Key[2] shr 8); Key[2] := byte(pOut^ + Key[2]) * Key[0] + Key[1]; inc(pIn); inc(pOut); end; Result := True; end else Result := False; end; function TextCrypt(const s: string; Key: TWordTriple; Encrypt: Boolean): string; var bOK: Boolean; begin SetLength(Result, Length(s)); if Encrypt then bOK := MemoryEncrypt(PChar(s), Length(s), PChar(Result), Length(Result), Key) else bOK := MemoryDecrypt(PChar(s), Length(s), PChar(Result), Length(Result), Key); if not bOK then Result := ''; end; function FileCrypt(InFile, OutFile: String; Key: TWordTriple; Encrypt: Boolean): boolean; var MIn, MOut: TMemoryStream; begin MIn := TMemoryStream.Create; MOut := TMemoryStream.Create; Try MIn.LoadFromFile(InFile); MOut.SetSize(MIn.Size); if Encrypt then Result := MemoryEncrypt(MIn.Memory, MIn.Size, MOut.Memory, MOut.Size, Key) else Result := MemoryDecrypt(MIn.Memory, MIn.Size, MOut.Memory, MOut.Size, Key); MOut.SaveToFile(OutFile); finally MOut.Free; MIn.Free; end; end; function TextEncrypt(const s: string; Key: TWordTriple): string; begin Result := TextCrypt(s, Key, True); end; function TextDecrypt(const s: string; Key: TWordTriple): string; begin Result := TextCrypt(s, Key, False); end; function FileEncrypt(InFile, OutFile: String; Key: TWordTriple): boolean; begin Result := FileCrypt(InFile, OutFile, Key, True); end; function FileDecrypt(InFile, OutFile: String; Key: TWordTriple): boolean; begin Result := FileCrypt(InFile, OutFile, Key, False); end; Привет! Я - ваш помощник по программированию на языке Delphi, и я готов помочь вам с кодом. Вот перевод текста на русский язык: Это модуль Delphi, который предоставляет функции для шифрования и дешифрования файлов, строк и блоков памяти с помощью алгоритма XOR с тройным словом ключа. Вот разбивка каждой функции:
В целом, это модуль предоставляет простой фреймворк для шифрования и дешифрования данных с помощью алгоритма XOR с тройным словом ключа. Однако, важно отметить, что данный алгоритм не является безопасным для чувствительных данных, так как он может быть легко взломан опытным атакующим. Некоторые предложения по улучшению:
Если у вас есть конкретные вопросы или области Concern, не стесняйтесь задать их! Шифрование файлов, строк и памяти: библиотека Delphi EZCrypt для шифрования и дешифрования данных. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Шифрование ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |