您的当前位置:首页VB中如何编写一个加密程序.doc

VB中如何编写一个加密程序.doc

来源:小侦探旅游网


编写一个加密软件,要求将源文件按字节逐位倒排序加密法加密。

字节逐位倒排序加密法是以比特为单位的换位加密方法,用vb实现的具体算法是:

(1) 以二进制模式打开源文件;

(2) 从源文件第i位读取一个字节,假设为字母“a”,得到“a”的ascii值为65;

(3) 将65转换成八位二进制串为“01000001”;

(4) 将“01000001”按字节逐位倒排序得另一个八位二进制串“10000010”;

(5) 将“10000010”转换成十进制再写回源文件第i位置,完成一个字节的加密;

(6) 重复(2)、(3)、(4)和(5),直到所有字节加密结束。

为了使程序模块化,我们用函数过程bytetobin完成将字节型数据转换成二进制串(其实质就是将十进制数转换成八位二进制串);用函数过程bintobyte将二进制串转换成字节型数据(实质是将八位二进制串转换成十进制数):用函数过程reverse将八位二进制串逐位倒排序。具体程序如下:

function bytetobin(m as byte) as string ' 将字节型数据转换成八位二进制字符串

dim c$

c$ = \"\"

do while m <> 0

r = m mod 2

m = m \\ 2

c$ = r & c$

loop

c$ = right(\"00000000\" & c$, 8)

bytetobin = c$

end function

function reverse(m as string) as string ' 将八位二进制字符串颠倒顺序

dim i%, x$

x = \"\"

for i = 1 to 8

x = mid(m, i, 1) & x

next i

reverse = x

end function

function bintobyte(m as string) as byte ' 将八位二进制串转换成十进制

dim x as string * 1, y%, z%

z = 0

for i = 1 to 8

x = mid(m, i, 1)

y = x * 2 ^ (8 - i)

z = z + y

next i

bintobyte = z

end function

private sub command1_click()

dim x as byte, i%, fname$

fname = inputbox(\"请输入要加密的文件名!注意加上路径名:\")

if dir(fname) = \"\" then

msgbox \"文件不存在!\"

exit sub

end if

open fname for binary as #1 ' 以二进制访问模式打开待加密文件

for i = 1 to lof(1) ' lof函数是求文件长度的内部函数

get #1, i, x ' 取出第i个字节

x = bintobyte(reverse(bytetobin(x))) ' 这里调用了三个自定义函数

put #1, i, x ' 将加密后的这个字节写回到文件原位置

next i

close

msgbox \"任务完成!\"

end sub

加密狗原理

加密狗通过2种加密方式对软件进行保护。

1、外壳加密:对编译后的EXE或DLL文件进行加壳保护,防止文件被反编译。软件在运行的过程中,会时时的和加密狗进行通讯和数据传输,一旦通讯中断或数据传输中的数据存在错误,就会禁止软件运行。

2、API函数加密:加密狗提供API函数,利用函数可以对加密狗内的存储空间进行读和写操作,可以保护一些防止外泄的重要数据。

利用API可以实现很多功能,比如:

a:将电脑硬件指纹(CPU ID、硬盘ID、主板ID、MAC地址、BIOS序列号等)写入加密狗中,实现软件和电脑的唯一绑定。

b:将数据库的表名、字段名等写入加密狗中,实现程序代码中对数据库表和字段操作时,以变量形式表现表和字段,保护数据库。

c、将一个整数写入加密狗中,来实现B/S架构的网站,限制注册用户数量。

以上只是一些简单的应用案例,更多案例及解决方案,可以登录“上海旺财信息”官方网站查找。

加密狗统一服务热线:400 600 9103

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