搜索
您的当前位置:首页VB文件加密解密

VB文件加密解密

来源:智榕旅游


程序设计实验

报 告

题 目 VB文本文档加密解密

学生姓名 李勃

学生学号 11211066

一.实验目的

通过对visual basic6.0 的使用,巩固了 visual basic 课程所学习的内容,训练熟练使用visual basic 6.0的基本方法和技巧。提高学生运用所学知识解决问题的能力,达到严谨工作科学的研究的素质。通过综合例题的训练,巩固前面所学的知识,并做到综合运用,在思维上是一次质的飞跃。训练学生使用该软件编写程序,对该软件熟练掌握,以达到学以致用的目的。

每个人都有一些不希望别人看到的东西,例如学习计划、日记等等,所以就特别希望能够使自己的东西只有自己能看懂,因此文件的加密与解密就应运而生了。它可以让我们的生活邓更加精彩。

该程序能对包含数字、大小写字母、空格、汉字,还有一般会使用得到的字符的txt文件进行加密与解密,你可以随便输入,而我的程序绝对能够帮助你保守秘密。特别指出的是对汉字的加密与解密功能。

此程序不仅能对字母和数字进行加解密,更是可以对汉字进行加解密。并有清除与结束按钮,能更方便的对程序进行操作。在按清除键后并使文本框1得到焦点。

二.实验背景

早在公元前400年,斯巴达人就发明了“塞塔式密码”,这就是我们所说的传统密码技术 。即把长条纸螺旋形地斜绕在一个多棱棒上,将文字沿棒的水平方向从左到右书写,写一个字旋转一下,写完一行再另起一行从左到右写,直到写完。解下来后,纸条上的文字就是密文。这是最早的密码技术。古代的密码术可以大致别分为两种,即易位和替换,当然也有两者结合的更复杂的方法。在易位中字母不变,位置改变;替换中字母改变,位置不变。 因此,为了使密码有更高的安全性,单字母替换密码就出现了。

特别是在现代社会,更是需要更加保密的加密方法来对自己的文件进行加密操作,使别人不能看到自己的隐私。

为了使自己的东西达到保密状态,大家在苦苦追寻着一种既能加密又能解密的这样一类简单实用的程序。因此,我选择了这个课题——文件的加密与解密。

随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。信息安全已经世界性的现实问题,信息安全问题已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信息安全问题也是人们能否保护自己的个人隐私的关键。信息安全是社会稳定安全的必要前提条件。

三.实验过程

1.总体框架

窗体上放置了三个标签、三个文本框、以及五个命令按钮,在文本框内输入或加载原文,单击

命令按钮即可实现加密和解密程序的操作。

1

2.详细设计

我编写的程序使用了命令按钮操作对程序进行控制。一共使用了五个命令按钮,这些命令按钮很好很方便的可以对各个操作进行控制,很好的将用户与软件结合为一体化。在文本框中不仅可以直接输入密文,还可以打开指定的文件对其进行加密解密。

这个程序的加密与解密方法如下:

定义两个数组,将其中一个数组的首字符转化为ASCLL码值,然后用一个MID函数进行取值,再是对其进行XOR运算,接着是把返回值装换为字符,依次循环,直到将所有的密文循环用完,最后是用一个连接运算,将其返回值输出到Texy2中。解密运算时与加密运算的逆运算,其中间过程与加密程序一样,最后也是将连接运算的返回值输出到Text3中。这就是此程序的加密、解密过程的代码。

2

3.主要功能模块的具体实现

在打开文件的方面我主要是加了一个对话框控件,然后是对其的一些特性进行编辑。然后是一个清除按钮,并且在清除之后可以让文本框1得到焦点,方便以后的操作。接着是两个加解密命令按钮,加解密是通过程序

i = 0

pwd = Text1.Text

n = Len(pwd)

ReDim oByte(0 To n - 1), temp(0 To n - 1)

Do While i < n

oByte(i) = Asc(Mid(pwd, i + 1, 1))

oByte(i) = 21 Xor oByte(i)

temp(i) = Chr(oByte(i))

i = i + 1

Loop

3

Text2 = Join(temp, \"\")

完成的,解密的程序只要与加密的程序反过来即可实现,所以整体来讲还是比较方便的。

4.主要技术问题或难题的解决方法

刚开始主要的问题是对菜单编辑器的使用不够熟练,于是下了课之后我就把我们上课使用的vb课本中的第八章、第九章以及后面的文件操作的实验部分给看了一下以使自己能够有理论上的知识,到了上课的时候又多加练习了几遍也就熟练了。

第二个问题就是开始时所编写的程序只能对26个字母以及空格进行加密与解密,范围太窄。为了解决这个问题,开始寻找新的程序来对包括汉字的加解密,于是找到这段让我费了很久才看明白的程序,不过此程序真的很好用,它不仅可以对字母,数字进行加密,更是可以对汉字进行加解密操作。

后来问题又出来了,程序在关掉后重新启用的时候,那个打开原文的按钮就不能用了,进过一番反复的操作和调试,知道了原来诗词按钮不在基本的按钮里面,操作的时候需要重新将其加入才能打开原文。不过只要在打包的时候添加进去就行了,以后就不会出现此类问题了。

不过还有一个问题没有解决,那就是如果有两个空格的话,程序操作的时候会有一个空格变成数字“3”,我想我会将其解决的。

5.亮点或创新点的实现

我的亮点是我的程序不仅可以对字母和数字进行加解密,而且能够对汉字进行加解密,并且能够无限次进行加密、解密运算,而且对文件的加解密更是很方便,此程序所能够进行加解密的文件

4

类型主要是文本文档和压缩包文件,

四 .实验总结

利用了暑假的这个短学期,进行了vb课程设计,我们在老师的指导下,结合自己的兴趣爱好,我选择了“文件加密、解密”这个程序设计课题,此课题主要要用到熟练的对文件控件进行操作。

自己动手动脑编写代码,进行界面设置,虽然我编写的程序不算复杂,但经过自己的努力并且由自己将代码一句句输入,然后试着运行,直到能够正确运行为止,每一句代码都是自己的劳动成果,为此我感到很有成就感,这证明了我这一学期的学习成果以及这几天的课程设计所获得的以后将会受用终身。

通过这次课程设计不仅仅使我巩固了以前学的知识,而且我还学会了如何用自己已有的知识来解决不熟悉的问题。通过这次课程设计,很好的锻炼了自己的动手能力,以及对VB的操作能力。

也许这次课程设计所涉及到的大部分是我们学过的内容,但通过这次的课程设计,使我对visual basic 6.0 有了新的认识,一直以来我都进入了一个误区,认为学习visual basic 语言没有多大的作用,然而通过这次课程设计,我知道了我们可以利用 visual basic 语言来达到自己的目的,例如用它来控制电路的闭合与断开。这些以前我都没有意识到,虽然我们也编写了不少的程序,然而却都跟我们的生活、学习没有太大的联系,因而也就不知道它的作用了。现在既然我已经知道 visual basic 语言对我们有如此大的作用,我就要学好它。

我想这次课程设计,有一点是不能不说的。就是程序在关掉后重新启用的时候,那个打开原文的按钮就不能用了,进过一番反复的操作和调试,知道了原来诗词按钮不在基本的按钮里面,操作的时候需要重新将其加入才能打开原文。不过只要在打包的时候添加进去就行了,以后就不会出现

5

此类问题了。我觉得这不能不说是一次飞跃,也许在别人看来这个问题很简单,然而我开始只是觉得这太难了,我根本不知道是哪里出现了问题,然而事实证明我可以做得到。因此从这个事实中我懂得了没有什么自己经过努力做不到的,有句话说得好“世上无难事,只怕有心人”就像我这样,刚开始就把它想得如登天一般困难,自己自然不能够做到,没试过就不要说不可以,这是我从中学到的最有用的东西,我想课程设计不仅仅是要让我们学到关于这门课的专业知识吧,也许还希望我们能学到更多的课本上没有的知识,像这样的事情也许有人说书上也有,然而不经过自己的亲身经历是不可能记得住的。

总而言之,这次课程设计我的收获还是不小的,我从中所学到的衣襟不仅仅局限于课本知识,那是需要你真正的运用到社会实践中去的,只有不懈的努力,才能克服种种难题,最后能够让自己满意。

源程序:

1.文中所提到的vb即visual basic

2. 源代码

Option Explicit

Private Sub Form_Load()

Text1.Text = \"\"

Text2.Text = \"\"

6

Text3.Text = \"\"

End Sub

Private Sub Command1_Click()

Text1.Text = \"\"

Text2.Text = \"\"

Text3.Text = \"\"

Text1.SetFocus

End Sub

Private Sub Command2_Click()

Dim n As Integer, i As Integer, pwd As String, oByte() As Integer, temp() As String

i = 0

pwd = Text1.Text

n = Len(pwd)

7

ReDim oByte(0 To n - 1), temp(0 To n - 1)

Do While i < n

oByte(i) = Asc(Mid(pwd, i + 1, 1))

oByte(i) = 21 Xor oByte(i)

temp(i) = Chr(oByte(i))

i = i + 1

Loop

Text2 = Join(temp, \"\")

End Sub

Private Sub Command3_Click()

Dim n As Integer, i As Integer, pwd As String, oByte() As Integer, temp() As String

i = 0

pwd = Text2.Text

8

n = Len(pwd)

ReDim oByte(0 To n - 1), temp(0 To n - 1)

Do While i < n

oByte(i) = Asc(Mid(pwd, i + 1, 1))

oByte(i) = 21 Xor oByte(i)

temp(i) = Chr(oByte(i))

i = i + 1

Loop

Text3 = Join(temp, \"\")

End Sub

Private Sub command4_Click()

Dim a As String

Text1.Text = \"\"

9

CommonDialog1.FileName = \"\"

CommonDialog1.Filter = \"all files |*.*|(*.exe)|*.exe|(*.txt)|*.txt\"

CommonDialog1.DialogTitle = \"打开原文\"

CommonDialog1.Action = 1

If CommonDialog1.FileName = \"\" Then

MsgBox \"没有选择文件\检查\"

Else

Open CommonDialog1.FileName For Input As #1

Do While Not EOF(1)

Line Input #1, a$

Text1.Text = Text1.Text + a$ + vbCrLf

Loop

Close #1

10

End If

End Sub

Private Sub Command5_Click()

End

End Sub

11

因篇幅问题不能全部显示,请点此查看更多更全内容

Top