ukey.pas

来自「用Delphi 开发的一个 户籍管理系统」· PAS 代码 · 共 42 行

PAS
42
字号
unit uKey;

interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls;
type

   Tmystream = class(Tfilestream)
   private
      fkey: string;
   public
      function read(var buffer; count: longint): longint; override;
      property key: string read fkey write fkey;
   end;


implementation

{ Tmystream }

function Tmystream.read(var buffer; count: Integer): longint;
var
   Pbu, Pmy, mykey: pchar;
   i, mycount, enc: Integer;
begin
   getmem(Pmy, count); // 为 pmy 分配内存
   mykey := pchar(key); // 将 key 转换为 pchar 指针
   try
      mycount := inherited read(Pmy^, count); // 将文件内容读入 pmy 指向内存区
      Pbu := pchar(@buffer); //将 buffer 转换为 pchar 指针
      for i := 0 to mycount - 1 do // 将 key 的每个字符依次与 pmy 的每个字符循环相减 ,结果放入 pbu 指向的变量
      begin
         enc := (ord(Pmy[i]) - ord(mykey[(i mod length(key))])) mod 256;
         Pbu[i] := chr(enc);
      end;
   finally
      freemem(Pmy, count);
   end;
   result := mycount;
end;
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?