【发布时间】:2015-09-06 18:41:21
【问题描述】:
我使用此代码加密文件:
procedure TForm9.EnDecryptFile(pathin, pathout: string; mem:TMemo; Chave: Word);
var
InMS, OutMS: TMemoryStream;
cnt: Integer;
C,A,B: byte;
s:string;
begin
mem.Clear;
InMS := TMemoryStream.Create;
OutMS := TMemoryStream.Create;
try
InMS.LoadFromFile(pathin) ;
InMS.Position := 0;
for cnt := 0 to InMS.Size - 1 do
begin
InMS.Read(C, 1) ;
A:=c;
C := (C xor not (ord(chave shr cnt))) ;
mem.Lines.Add(IntToStr(A)+^I+IntToStr(C));
OutMS.Write(C, 1) ;
end;
OutMS.SaveToFile(pathout) ;
finally
InMS.Free;
OutMS.Free;
end;
end;
当我在表单中添加 meme 控件并在加密之前/之后检查大约 2000 个字节时,我根本不了解算法。请帮助我理解这个标题:
- Xor 与非运算的组合。
请使用示例来展示算法操作。谢谢。
【问题讨论】:
-
您为什么不阅读文档而不是我们记录语言基础知识?
-
你已经看到例如这个 q: "stackoverflow.com/questions/9482352/…" 及其 cmets + 答案?
-
对不起!我对 XOR 的组合有疑问,请在此步骤中提供帮助。
-
首先,请参阅en.wikipedia.org/wiki/XOR_cipher。 XOR 编码/解码将字节的位与密钥的位相结合。用相同的密钥对字节进行两次异或运算会将其恢复到原来的状态。 “not (ord(chave shr cnt))”根据 InMS 中正在加密/解密的字节位置和 Chave 的值生成密钥。在该行上放置一个断点并在调试器中观察它发生的情况。
标签: delphi encryption