2009年2月21日星期六

用USB加密锁加密lisp程序

近日我用LISP编写的一个批量标注的软件终于完成了,目前正在做最后的测试,并考虑加密的问题。
经过再三比较并与朋友商量,我决定采用USB加密锁来对软件进行加密。加密锁也买来了,接下来的问题是:
这种锁只能对EXE或DLL类型的可执行文件加密。我的思路是:
(1)将程序中的一部分功能用VB程序来实现;
(2)VB程序编译成DLL格式;
(3)在LISP程序中调用该DLL文件。


下面这篇文章,就是为了达到上面的目的而从网上找来参考的。
文章标题:LISP调用DLL文件生成随机数

;;;这是用LISP调用DLL文件生成随机数的程序示例。

;|
在VB6中创建一个ActiveX DLL工程,在其中将类模块修改为RND,将工程名修改为RNDAPP。
在其中添加下面的代码:

Public Function GetRND() As Double
Dim i As Double
i = RND
GetRND = i
End Function

将其编译成DLL文件(“RNDAPP.dll”)。
在WINDOWS下注册这个DLL文件。
先将这个文件拷入C盘根目录下(注:也可放入相应文件夹下但文件夹名称中不能有空格)。
再在运行中加入运行如下命令:Regsvr32 c:\RNDAPP.dll
;;|;

;;;然后编LISP程序。

(vl-load-com)
(defun c:testrnd( / rndobj rndnum)
(setq rndobj (vlax-get-or-create-object "RNDAPP.RND"))
(setq rndnum (vlax-invoke-method rndobj "GetRND"))
(princ rndnum )
(princ)
)
;;;这里的rndnum就是想要的随机数。

;|;;
这里是测试结果:
命令: testrnd
0.592458
命令:
命令: testrnd
0.4687

Template Designed by Douglas Bowman - Updated to New Blogger by: Blogger Team
Modified for 3-Column Layout by Hoctro