unit untCheckCode;
interface
function GetFile_MD5(const iFileName: String): String; // 获取文件MD5
function GetFile_CRC(const iFileName: String): String; // 获取文件CRC
function GetFile_SHA1(const iFileName: String): String; // 获取文件SHA1
function GetFile_SHA256(const iFileName: String): String; // 获取文件SHA256
function GetFile_SHA384(const iFileName: String): String; // 获取文件SHA384
function GetFile_SHA512(const iFileName: String): String; // 获取文件SHA512
implementation
uses IdHashMessageDigest, Classes, IdHashCRC, IdHashSHA, IdSSLOpenSSLHeaders;
var
FOpenSSLLoad: Boolean;
function GetFile_MD5(const iFileName: string): String;
var
MemSteam: TMemoryStream;
MyMD5 : TIdHashMessageDigest5;
begin
MemSteam := TMemoryStream.Create;
MemSteam.LoadFromFile(iFileName,',',');
MyMD5 := TIdHashMessageDigest5.Create;
Result := MyMD5.HashStreamAsHex(MemSteam,',',');
MyMD5.Free;
MemSteam.Free;
end;
function GetFile_CRC(const iFileName: String): String;
var
crc : TIdHashCRC32;
fileStream: TMemoryStream;
begin
crc := TIdHashCRC32.Create;
fileStream := TMemoryStream.Create;
try
fileStream.LoadFromFile(iFileName,',',');
Result := crc.HashStreamAsHex(fileStream,',',');
finally
fileStream.Free;
crc.Free;
end;
end;
function GetFile_SHA1(const iFileName: String): String;
var
SHA1 : TIdHashSHA1;
fileStream: TMemoryStream;
begin
SHA1 := TIdHashSHA1.Create;
fileStream := TMemoryStream.Create;
try
fileStream.LoadFromFile(iFileName,',',');
Result := SHA1.HashStreamAsHex(fileStream,',',');
finally
fileStream.Free;
SHA1.Free;
end;
end;
function GetFile_SHA256(const iFileName: String): String;
var
SHA256 : TIdHashSHA256;
fileStream: TMemoryStream;
begin
if FOpenSSLLoad then
begin
SHA256 := TIdHashSHA256.Create;
fileStream := TMemoryStream.Create;
try
fileStream.LoadFromFile(iFileName,',',');
Result := SHA256.HashStreamAsHex(fileStream,',',');
finally
fileStream.Free;
SHA256.Free;
end;
end
else
begin
Result := 'Error';
end;
end;
function GetFile_SHA384(const iFileName: String): String;
var
SHA384 : TIdHashSHA384;
fileStream: TMemoryStream;
begin
if FOpenSSLLoad then
begin
SHA384 := TIdHashSHA384.Create;
fileStream := TMemoryStream.Create;
try
fileStream.LoadFromFile(iFileName,',',');
Result := SHA384.HashStreamAsHex(fileStream,',',');
finally
fileStream.Free;
SHA384.Free;
end;
end
else
begin
Result := 'Error';
end;
end;
function GetFile_SHA512(const iFileName: String): String;
var
SHA512 : TIdHashSHA512;
fileStream: TMemoryStream;
begin
if FOpenSSLLoad then
begin
SHA512 := TIdHashSHA512.Create;
fileStream := TMemoryStream.Create;
try
fileStream.LoadFromFile(iFileName,',',');
Result := SHA512.HashStreamAsHex(fileStream,',',');
finally
fileStream.Free;
SHA512.Free;
end;
end
else
begin
Result := 'Error';
end;
end;
initialization
FOpenSSLLoad := IdSSLOpenSSLHeaders.Load(,',',');
end.
关键字词: