- UID
- 17680
注册时间2006-7-8
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
各种加密方法演示(Delphi)(1)
1.xor加密法
通常用来简单地加密字符串,当然也可以用来加密文件,但是文件太大,而程序又是单线程的话,需要花很长的时间,一般不采用来加密文件。
加密原理:一个数字连续与一个相同的数字进行两次xor操作以后,得到的仍然是本身,所以第一次xor就可以看做是加密,而第二次则可看做是解密。
代码演示:
- //加密字符串
- procedure stringenc(var s:string);
- var
- i:integer;
- begin
- for i := 1 to length(s) do
- s[i] := chr(ord(s[i]) xor 123);//123是随意设置的,当然可以设置为任何值
- end;
- //加密文件
- procedure fileenc(filename:string);
- var
- SF,DF:File of char;//SF和DF分别是Source File和Destination File的缩写
- tempchar:char;
- begin
- try
- AssignFile(SF,filename);
- reset(SF);
- AssignFile(DF,ChangeFileExt(ExtractFileName(filename),'.zk'));//zk是我名字的缩写,呵呵!
- Rewrite(DF);
- while not Eof(SF) do
- begin
- read(SF,tempchar);
- try
- tempchar := chr(ord(tempchar) xor 123);
- except
- CloseFile(DF);
- CloseFile(SF);
- DeleteFile(ChangeFileExt(ExtractFileName(filename),'.zk'));
- end;
- write(DF,tempchar);
- end;
- CloseFile(DF);
- CloseFile(SF);
- except
- CloseFile(DF);
- CloseFile(SF);
- ShowMessage('An unknown error has occured,the application must terminate now!');
- Application.Terminate;
- end;
- DeleteFile(filename);
- RenameFile(ChangeFileExt(ExtractFileName(filename),'.zk'),filename);
- ShowMessageBox('Encryption or Decryption succeeded!');//本过程既可用于加密也用于解密,所以提示加密或者解密成功
- end;
复制代码
未完待续...... |
|