方法一、使用 delphi 内置函数。
delphi 的 IdHashSHA 单元,提供了 TidHashSHa1 类,可以实现 SHA1 加密。
方法二、使用第三方控件。
如:CnPack 小组提供的 CnSHA1。示例代码如下:
procedure TForm1.btnSha1Click(Sender: TObject)begin
{$IFDEF UNICODE}
pnlSha1.Caption := SHA1Print(SHA1StringA(AnsiString(edtSha1.Text)))
{$ELSE}
pnlSha1.Caption := SHA1Print(SHA1String(edtSha1.Text))
{$ENDIF}
end
文件加密解密 函数{ -- 文件加密函数 默认按照 128 位密匙解密 -- }
procedure EncryptFile(SourceFile, DestFile: string
Key: stringKeyBit: TKeyBit = kb128)
var
SFS, DFS: TFileStream
Size: Int64
AESKey128: TAESKey128
AESKey192: TAESKey192
AESKey256: TAESKey256
begin
SFS := TFileStream.Create(SourceFile, fmOpenRead)
try
DFS := TFileStream.Create(DestFile, fmCreate)
try
Size := SFS.Size
DFS.WriteBuffer(Size, SizeOf(Size))
if KeyBit = kb128 then
begin
FillChar(AESKey128, SizeOf(AESKey128), 0 )
Move(PChar(Key)^, AESKey128, Min(SizeOf(AESKey128), Length(Key)))
EncryptAESStreamECB(SFS, 0, AESKey128, DFS)
end
{ -- 192 位密匙最大长度为 24 个字符 -- }
if KeyBit = kb192 then
begin
FillChar(AESKey192, SizeOf(AESKey192), 0 )
Move(PChar(Key)^, AESKey192, Min(SizeOf(AESKey192), Length(Key)))
EncryptAESStreamECB(SFS, 0, AESKey192, DFS)
end
{ -- 256 位密匙最大长度为 32 个字符 -- }
if KeyBit = kb256 then
begin
FillChar(AESKey256, SizeOf(AESKey256), 0 )
Move(PChar(Key)^, AESKey256, Min(SizeOf(AESKey256), Length(Key)))
EncryptAESStreamECB(SFS, 0, AESKey256, DFS)
end
finally
DFS.Free
end
finally
SFS.Free
end
end
-----------------------
给分后放出解密函数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)