VB下基于Windows平台的任意格式文件加密和解密程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB下基于Windows平台的任意格式文件加密和解密程序
本文论述了以注册表为载体,对文件二进制读写,模块化设计,实现加解密程序。

包括:引言、程序要求及实现目标、程序设计思路及方法、程序的主要实现代码、结论等内容。

标签:注册表文件二进制读写模块化分组设计
一、引言
信息社会,人们在享受信息资源利益的同时,也面临着信息安全的考验。

信息安全已为世界性的问题,已威胁到国家各领域,同时,信息安全也是人们能否保护个人隐私的关键。

也是社会稳定前提。

解决方法是加密,所以加解密就显得重要。

本文通过算法,保障信息安全,体现出数据价值。

下面讨论对数据加解密,以及如何卸载程序。

[1]
二、程序要求及实现目标
1.程序要求:运行效率没有要求,但对算法要求较高,即此算法是人工在有限时间内不可破解的。

2.实现目标:右键选中文件,经算法加密,或解密成原文件,供使用。

达到方便快速目的。

三、程序设计思路及方法
1.程序思路:为了达到用户对程序的要求,该程序应选用合理的算法,设计好注册表参数,设计一个显示进度条,显示文件进度。

还应有一个卸载程序,不需时卸载,需时再安装。

2.设计方法:采用“右键选中获取路径”的方式,一步操作就能获取路径。

此功能要读写注册表。

读注册表獲取状态,决定是初始化还是已安装。

如果未安装则启动初始化,若已安装则提示右键执行。

会显示进度条,看执行百分比。

用算法对文件读写,有两法。

第一:大于或等于100KB的文件,用限制字节异或方法,能以最短时间执行,第二:小于100KB的文件,对所有数据异或和算术运算。

还实现一个卸载程序,卸载时输入密码,保证完整性安全性。

[2]
四、程序的主要实现代码
加解密是两个同算法互逆过程。

用此算法加密的文件就一定也能用同样的算法解密。

输入初始密码,此密码用于以后每次加解密时身份验证,最好用“数字+字母+特殊字符”的形式,牢记此密码。

代码如下:
Setreg2 =CreateObject(”wscript.shell”)
IfStrComp(Label2.Caption,“请输入初始密码”)= 0Then
reg2.regwrite”HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\文件加密和解密\command\password”,PasswordEn(Text1.Text),”REG_SZ”
Else
IftrComp(reg2.regread(”HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\文件加密和解密\command\password”),PasswordEn(Text1.Text))Then MsgBox”密码错误!无法加解密!”,vbCritical,”密码”
EndIf
lnglen=Len(strPassword)
Fori=1Tolnglen
lngtemp=((Asc(Mid(strPassword,i,1))Xor(2*i))+(13*i)-4)Mod128 SelectCaselngtemp
Case9,10
lngtemp=11
Case13
lngtemp=14
Case28To31
lngtemp=32
EndSelect
strtemp=strtemp&Chr(lngtemp)
Nexti
PasswordEn=strtemp
系统提示右键菜单创建成功,这时就可以使用右键对文件加密和解密了,而不需要再双击“文件加密和解密.exe”文件了。

代码如下:
//注1
Setfol=fso.GetFolder(str)
ForEachfilInfol.Files
FileEnDefil.Path
CurrFileCount=CurrFileCount+1
Form3.ProgressBar1.Value=CurrFileCount
Nextfil
ForEachsubfolInfol.SubFolders
DirEnDesubfol.Path
Nextsubfol
argvAddress=GetCommandLine
argvApp=String(lstrlen(argvAddress)+1,0)
lstrcpyargvApp,argvAddress
cmd=Command
IfLen(cmd)Then
S=cmd
Else
argvApp=Mid(argvApp,2,InStrRev(argvApp,”“““)-2)
FileCopyargvApp,GetFixDrive&”:\”&Mid(argvApp,InStrRev(argvApp,”
\”)+1)
EndIf
下面就分别以加密和解密单个文件、文件夹、大于等于100KB、小于100KB 四种方式对其主要实现代码加以介绍:
1.单个文件且大于等于100KB加密和解密:此种文件加密方式截图如下:
如图1所示,直接在文件上右键,弹出快捷菜单,选中“文件加密和解密”
如图2所示,弹出密码框,系统要求输入密码进行身份验证,保证密码唯一验证,防破解。

代码如下:
OpenstrForBinaryAs#1
flen=LOF(1)
Ifflen>=102400Then
pos=flen-100
Ifflen>=(flen+1-pos)*2Then
Fori=1Toflen+1-pos
Get#1,i,byt(1)
Addbyt=byt(1)
Get#1,flen+1-i,byt(2)
Addbyt=AddbytXorbyt(2)
Forj=1ToAddbytStep3
byt(1)=byt(1)Xorj
Nextj
Forj=1ToAddbytStep3
byt(2)=byt(2)Xorj
Nextj
Put#1,i,byt(2)
Put#1,flen+1-i,byt(1)
Nexti
EndIf
Close#1
2.單个文件且小于100KB加密和解密:
此法与(1)类似,区别在文件小于100KB,直接整体加密,代码如下:
t=1
Forj=1Toflen
Get#1,j,Allbyt
Allbyt=AllbytXort
t=IIf((t+3)>=256,(t+3)Mod256,(t+3))
Put#1,j,Allbyt
Nextj
3.多文件小于100KB:
此法与(2)同,区别是多文件操作,用递归法,用来查找根文件夹下的所有文件,逐一加解密。

代码见注1。

4.多文件大于等于100KB:
此法与(1)同,区别对多文件操作,除单文件加密外,此法与(3)同。

代码也与(3)同。

综上四法,实现了对任意格式文件的加解密。

可保证结果正确,即加密后文件绝对不能正常打开,解密后文件绝对可以正常打开。

此程序对二进制字节操作,
因此适应于任意文件格式。

五、结论
本程序完成了任意格式的文件加密和解密,从速度和结果准确性上都达到了用户的要求,为用户提供了实时的文件数据安全。

参考文献
[1]马云,郑艳国;文件加密与解密算法的分析与应用[J];科技资讯;2012年第17期
[2]多磊;分组密码的设计与分析[D] ;中国人民解放军国防科学技术大学;2002年。

相关文档
最新文档