📄 ukey.pas
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -