在delphi中怎样实现SHA1加密

在delphi中怎样实现SHA1加密,第1张

方法一、使用 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))

{ -- 128 位密匙最大长度为 16 个字符 -- }

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

-----------------------

给分后放出解密函数


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11759014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存