如何在Delphi软件中实现对配置文件的加密解密

如何在Delphi软件中实现对配置文件的加密解密,第1张

文件加密,你可以在百度上下载超级加密3000 这是一款功能强大的文件和文件夹加密和保护软件。

超级加密3000有超快和最强的文件、文件夹加密功能、数据保护功能,文件夹、文件的粉碎删除以及文件夹伪装等功能。

超级加密 3000采用先进的加密算法,使你的文件和文件夹加密后,真正的达到超高的加密强度,让你的加密数据无懈可击。

超级加密3000还支持加密文件的临时解密,文件加密后,双击加密文件,在d出密码输入对话框输入正确的密码选择确定,该加密文件就处于临时解密,文件使用完毕退出以后,它自动恢复到加密状态,无需再加密。

超级加密3000是一款不可多得的文件加密软件,您可以到百度上搜索超级加密3000给您的文件加密试试看。

我以前也做过这种小程序。这个算法你可以自己设计,也可以用像什么MD5之类的加解密算法咯。

但因为不能粘贴附件,所以就贴点代码。

procedure TForm1.N2Click(Sender: TObject)//打开文件

var

tl:string

begin

if OpenDialog1.Execute then

begin

ListBox1.Clear

Caption:='文件加密解密器'+OpenDialog1.FileName

AssignFile(ATextFile,OpenDialog1.FileName)

Reset(ATextFile)

while not eof(ATextFile) do

begin

Readln(ATextFile,tl)

ListBox1.Items.Add(tl)

end

CloseFile(ATextFile)

end

end

function Encode(s:string):string//加密的核心部分

var

n,i:integer

str:string

begin

n:=length(s)

str:=''

for i:=1 to n do

begin

str:=str+char(ord(s[i])+10)

end

Encode:=str

end

function Decode(s:string):string//解密的核心部分

var

n,i:integer

str:string

begin

n:=length(s)

str:=''

for i:=1 to n do

begin

str:=str+char(ord(s[i])-10)

end

Decode:=str

end

procedure TForm1.N3Click(Sender: TObject)//加密

var

ln:integer

tl,nl:string

begin

if SaveDialog1.Execute then

begin

AssignFile(ATextFile,SaveDialog1.FileName)

Rewrite(ATextFile)

for ln:=0 to ListBox1.Items.Count-1 do

begin

tl:=ListBox1.Items[ln]

nl:=Encode(tl)//加密

Writeln(ATextFile,nl)

end

CloseFile(ATextFile)

end

end

procedure TForm1.N4Click(Sender: TObject)//解密

var

ln:integer

tl,nl:string

begin

if SaveDialog1.Execute then

begin

AssignFile(AtextFile,SaveDialog1.FileName)

Rewrite(ATextFile)

for ln:=0 to ListBox1.Items.Count-1 do

begin

tl:=ListBox1.Items[ln]

nl:=Decode(tl)//解密

Writeln(ATextFile,nl)

end

CloseFile(ATextFile)

end

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/11461577.html

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

发表评论

登录后才能评论

评论列表(0条)

保存