16,748
社区成员
发帖
与我相关
我的任务
分享
const
M1:Cardinal = $fffa;
IA1:Cardinal = $fffb;
IC1:Cardinal = $fffc;
procedure encrypt(key:Cardinal; buffer:PChar; size:Cardinal);
var
idx, mkey:Cardinal;
begin
idx:=0;
if 0=key then key:=1;
mkey:=M1;
if 0=mkey then mkey:=1;
while idx < size do
begin
key:= IA1*(key mod mkey)+IC1;
buffer[idx]:= Char(Byte(buffer[idx]) xor ((key shr 20) and $ff));
Inc(idx);
end;
end;
// 测试,放个memo上去
// 点一次加密,再点一次还原
procedure TForm1.btn1Click(Sender: TObject);
var
s:string;
I, len: Integer;
begin
s:='abc0123哈喽';
len:= Length(s);
encrypt(3453543121,PChar(s),len);
mmo1.Clear;
for I := 1 to len do
mmo1.Lines[0]:= mmo1.Lines[0] + (IntToStr(ord(s[i])) + ' ')
end;