Delphi 语言 文件加密解密技巧

Delphi阿木 发布于 2025-06-18 11 次阅读


摘要:随着信息技术的不断发展,数据安全成为越来越受到重视的问题。Delphi 语言作为一种功能强大的编程语言,在文件加密解密方面有着广泛的应用。本文将围绕 Delphi 语言文件加密解密技巧展开,详细介绍几种常用的加密解密方法,并附上相应的代码示例。

一、

Delphi 语言以其简洁、高效、易学等特点,在软件开发领域有着广泛的应用。在数据安全方面,文件加密解密是保障数据安全的重要手段。本文将介绍几种在 Delphi 语言中实现文件加密解密的方法,包括对称加密、非对称加密和哈希加密等。

二、对称加密

对称加密是指加密和解密使用相同的密钥。在 Delphi 语言中,可以使用 TIdCrypto组件来实现对称加密。以下是一个使用AES算法进行文件加密和解密的示例代码:

delphi

uses


IdCrypto, IdGlobal, IdHash, IdHashMD5, IdHashSHA, IdHashSHA256, IdHashSHA512, IdIOHandlerSocket, IdIOHandlerStream, IdTCPClient, IdTLSClient;

procedure EncryptFile(const SourceFile, DestFile, Password: string);


var


F: TIdFile;


Stream: TIdMemoryStream;


Crypto: TCrypto;


EncryptedStream: TIdMemoryStream;


begin


F := TIdFile.Create;


try


F.Open(SourceFile, fmOpenRead or fmShareDenyWrite);


Stream := TIdMemoryStream.Create;


try


Stream.CopyFrom(F, F.Size);


Crypto := TCrypto.Create;


try


Crypto.CipherMode := cmECB;


Crypto.Cipher := TCryptoAES;


Crypto.Key := StrToBin(Password);


Crypto.KeyLength := 32; // AES-256


EncryptedStream := TIdMemoryStream.Create;


try


Crypto.EncryptStream(Stream, EncryptedStream);


EncryptedStream.SaveToFile(DestFile);


finally


EncryptedStream.Free;


end;


finally


Crypto.Free;


end;


finally


Stream.Free;


end;


finally


F.Free;


end;


end;

procedure DecryptFile(const SourceFile, DestFile, Password: string);


var


F: TIdFile;


Stream: TIdMemoryStream;


Crypto: TCrypto;


DecryptedStream: TIdMemoryStream;


begin


F := TIdFile.Create;


try


F.Open(SourceFile, fmOpenRead or fmShareDenyWrite);


Stream := TIdMemoryStream.Create;


try


Stream.CopyFrom(F, F.Size);


Crypto := TCrypto.Create;


try


Crypto.CipherMode := cmECB;


Crypto.Cipher := TCryptoAES;


Crypto.Key := StrToBin(Password);


Crypto.KeyLength := 32; // AES-256


DecryptedStream := TIdMemoryStream.Create;


try


Crypto.DecryptStream(Stream, DecryptedStream);


DecryptedStream.SaveToFile(DestFile);


finally


DecryptedStream.Free;


end;


finally


Crypto.Free;


end;


finally


Stream.Free;


end;


finally


F.Free;


end;


end;


三、非对称加密

非对称加密是指加密和解密使用不同的密钥。在 Delphi 语言中,可以使用 TIdCrypto组件来实现非对称加密。以下是一个使用RSA算法进行文件加密和解密的示例代码:

delphi

uses


IdCrypto, IdGlobal, IdIOHandlerSocket, IdIOHandlerStream, IdTCPClient, IdTLSClient;

procedure EncryptFile(const SourceFile, DestFile, PublicKey: string);


var


F: TIdFile;


Stream: TIdMemoryStream;


Crypto: TCrypto;


EncryptedStream: TIdMemoryStream;


begin


F := TIdFile.Create;


try


F.Open(SourceFile, fmOpenRead or fmShareDenyWrite);


Stream := TIdMemoryStream.Create;


try


Stream.CopyFrom(F, F.Size);


Crypto := TCrypto.Create;


try


Crypto.CipherMode := cmECB;


Crypto.Cipher := TCryptoRSA;


Crypto.Key := StrToBin(PublicKey);


Crypto.KeyLength := 2048; // RSA-2048


EncryptedStream := TIdMemoryStream.Create;


try


Crypto.EncryptStream(Stream, EncryptedStream);


EncryptedStream.SaveToFile(DestFile);


finally


EncryptedStream.Free;


end;


finally


Crypto.Free;


end;


finally


Stream.Free;


end;


finally


F.Free;


end;


end;

procedure DecryptFile(const SourceFile, DestFile, PrivateKey: string);


var


F: TIdFile;


Stream: TIdMemoryStream;


Crypto: TCrypto;


DecryptedStream: TIdMemoryStream;


begin


F := TIdFile.Create;


try


F.Open(SourceFile, fmOpenRead or fmShareDenyWrite);


Stream := TIdMemoryStream.Create;


try


Stream.CopyFrom(F, F.Size);


Crypto := TCrypto.Create;


try


Crypto.CipherMode := cmECB;


Crypto.Cipher := TCryptoRSA;


Crypto.Key := StrToBin(PrivateKey);


Crypto.KeyLength := 2048; // RSA-2048


DecryptedStream := TIdMemoryStream.Create;


try


Crypto.DecryptStream(Stream, DecryptedStream);


DecryptedStream.SaveToFile(DestFile);


finally


DecryptedStream.Free;


end;


finally


Crypto.Free;


end;


finally


Stream.Free;


end;


finally


F.Free;


end;


end;


四、哈希加密

哈希加密是一种单向加密算法,用于验证数据的完整性。在 Delphi 语言中,可以使用 TIdHash组件来实现哈希加密。以下是一个使用SHA-256算法进行文件哈希加密的示例代码:

delphi

uses


IdCrypto, IdGlobal, IdIOHandlerSocket, IdIOHandlerStream, IdTCPClient, IdTLSClient;

procedure HashFile(const SourceFile, HashAlgorithm: string; var HashValue: string);


var


F: TIdFile;


Stream: TIdMemoryStream;


Hash: THash;


begin


F := TIdFile.Create;


try


F.Open(SourceFile, fmOpenRead or fmShareDenyWrite);


Stream := TIdMemoryStream.Create;


try


Stream.CopyFrom(F, F.Size);


Hash := THash.Create;


try


Hash.HashType := HashAlgorithm;


Hash.UpdateStream(Stream);


HashValue := Hash.HashString;


finally


Hash.Free;


end;


finally


Stream.Free;


end;


finally


F.Free;


end;


end;


五、总结

本文介绍了在 Delphi 语言中实现文件加密解密的几种常用方法,包括对称加密、非对称加密和哈希加密。通过对这些方法的了解和实际应用,可以有效地保障数据的安全性和完整性。在实际开发过程中,应根据具体需求选择合适的加密解密方法,并注意密钥的安全管理。

(注:本文代码示例仅供参考,实际应用中可能需要根据具体情况进行调整。)