前两天有一任务,要求程序可以自校验,如果发现被非法修改则直接产生 C5 错误结束程序。印象中 vfp 是有一个函数可以直接触发 C5 错误的,可就是想不起来,也不记得是在哪里看到过,上网溜达一番也没找到,所以在论坛上发了一贴求援,结果还是新狐上路兄弟记性好,告诉了我。
这个函数就是 ms 没有在 vfp 帮助文档中公开的 sys(1079)!只是这个函数会弹出一个对话框,询问用户是否真的要触发一个 C5 错误,当时的解决方法就是用 keyboard 命令在键盘缓冲区中放一个 Enter 键来直接确认它,可是还是这个对话框还是会在短时间内显示出来。无意中,给这个函数加了一个参数,sys(1079,0),结果大大出乎我的意料,提示框没有了!试了三次,发现不管是什么参数,只要有附加参数就行,都会直接触发 C5,呵呵,真是“无心插柳柳成荫”啊!
关于自校验的问题,现在是使用 MS 已封装过 Crypto API 的 COM 库 CAPICOM,但还不是很满意,毕竟要另外发布一个 dll,理想的方案还是直接用 Crypto API 来实现,不过这个 API 类中包含的东西实在太多,以前只在计算 hash(MD5/SHA) 值时研究过(昨天还有朋友对那个计算 MD5 值的函数提出过修改意见),其他的太复杂。也是,不然密码学怎么能单独成为一门学问呢?这几天要抽空研究一下,看看能否再上一台阶。有点难,感觉有些“廉颇老矣”,不知“尚能饭否”?!