
要求:1)以命令行形式运行:check_sum infile
其中check_sum为程序名,infile为输入数据文件名。
2)输出:数据文件的效验和
附:效验和(checksum)
原理:把要发送的数据看成二进制整数序列,并计算他们的和。若数据字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。
例子:16位效验和计算,下图表明一个小的字符串的16位效验和的计算。
为了计算效验和,发送计算机把每对字符当成16位整数处理并计算效验和。如果效验和大于16位,那么把进位一起加到最后的效验和中。
以下代码出至goomoo(古木)的例程里! 主程序代码如下: .版本 2.支持库 dp1.程序集 窗口程序集1.子程序 __启动窗口_创建完毕
.局部变量 文件数据, 字节集
.局部变量 校验数据, 字节集
.局部变量 临时数据数组, 字节集, , "0".如果真 (是否为调试版 () = 假) ' 此处加一判断,以方便调试程序
文件数据 = 读入文件 (取执行文件名 ())
临时数据数组 = 分割字节集 (文件数据, 到字节集 (#分割符), )
.如果真 (取数组成员数 (临时数据数组) < 3) ' 分割后应该有三块
信息框 (“程序已被非法修改或感染病毒!”, #错误图标, “警告”)
结束 ()
.如果真结束
' 把前面两块加上分割符拼接成完整的EXE文件
文件数据 = 临时数据数组 [1] + 到字节集 (#分割符) + 临时数据数组 [2]
校验数据 = 解压数据 (临时数据数组 [3]) ' 第三块为校验数据,已被压缩,所以先解压一下
.如果真 (取数据摘要 (文件数据) ≠ 到文本 (校验数据))
信息框 (“程序已被非法修改或感染病毒!”, #错误图标, “警告”)
结束 ()
.如果真结束.如果真结束 添加效验工具代码: .版本 2
.支持库 dp1.程序集 窗口程序集1.子程序 _按钮浏览_被单击.如果真 (通用对话框1.打开 ())
编辑框文件名.内容 = 通用对话框1.文件名
.如果真结束
.子程序 _按钮添加校验_被单击
.局部变量 文件数据, 字节集
.局部变量 校验数据, 字节集.如果真 (编辑框文件名.内容 = “” 或 取文件尺寸 (编辑框文件名.内容) ≤ 0)
信息框 (“指定的文件不正确!”, #错误图标, )
返回 ()
.如果真结束
文件数据 = 读入文件 (编辑框文件名.内容)
校验数据 = 压缩数据 (到字节集 (取数据摘要 (文件数据)))
文件数据 = 文件数据 + 到字节集 (#分割符) + 校验数据
.如果 (写到文件 (编辑框文件名.内容, 文件数据))
信息框 (“添加自校验信息成功!”, #信息图标, )
.否则
信息框 (“改写文件失败!”, #错误图标, )
.如果结束 你也可以加我QQ我把源码发给你。。
在启动子程序下面加上你的验证代码编程的时候我觉得依赖最多的就是模块,各种各样的模块,提供了丰富的命令,有的模块在用的时候我们发现,会自动输出一些文字,或者用的时候d出需要登录或者注册之类的东西,重点就在模块的_启动子程序()下面,易语言在初始化的时候会首先调用这个子程序,一般的验证都是加在这里了,比如我们让模块在被调试的时候输出一些自己的宣传语
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)