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

时间:2022-07-13 11:18:13 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
编写一个加密软件,要求将源文件按字节逐位倒排序加密法加密。

字节逐位倒排序加密法是以比特为单位的换位加密方法,用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、外壳加密:对编译后的EXEDLL文件进行加壳保护,防止文件被反编译软件在运行的过程中,会时时的和加密狗进行通讯和数据传输一旦通讯中断或数据传输中的数据存在错误,就会禁止软件运行。

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


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

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

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

c、将一个整数写入加密狗中,来实现B/S架构的网站,限制注册用户数量。 以上只是一些简单的应用案例,更多案例及解决方案,可以登录“上海旺财息”官方网站查找。

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




本文来源:https://www.wddqw.com/doc/0e15c452227916888586d71d.html