加密你的算法-matlab程序的加密和代码的加速

主要有两种方式实现matlab程序的加密和代码的加速

1. pcode命令

·        P文件是对应M文件的一种预解析版本(preparsed version)。因为当你第一次执行M文件时,Matlab需要将其解析(parse)一次(第一次执行后的已解析内容会放入内存作第二次执行时使用,即第二次执行时无需再解析),这无形中增加了执行时间。所以我们就预先作解释,那么以后再使用该M文件时,便会直接执行对应的已解析版本,即P文件。但又因为Matlab的解析速度非常快,一般不用自己作预解析。只有当一些程序要调用到非常多的M文件时,如GUI应用程序时,才会作预解析,以增加以后的调用速度。

·        P文件可以用来作保密代码之用,如果你给别人一个M文件,别人可以打开来看到你所有的代码和算法。如果你的代码不想被别人看到,那可以给他P文件。

·        pcode函数也可以应用在M函数文件.

    >>pcodefilename.m  将filename的m存储为p文件
    >>pcode dir/*.m     将路径dir下的所有m文件转换为p文件,也可用pcode dir

   缺点是不能够脱离Matlab单独运行,必须还在command window里面调用,可移植性不强。

2. 生成.exe可执行文件,可独立MATLAB环境运行

    a.将MATLAB当前目录设置至需要M程序所在的路径;

    b.在命令窗口Commandwindow 输入 Mbuild –setup  选择编译器对程序进行编译:

     (1)当出现Would youlike mbuild to locate installed compilers [y]/n?  输入 y

      (2) 出现 Select acompiler: 
           [1] Lcc C version2.4.1 in D:\PROGRAM FILES\MATLAB71\sys\lcc 
           [2] MicrosoftVisual C/C++ version 6.0 in C:\Program Files\Microsoft Visual Studio 
           [0] None

           Compiler: 

          输入 1,选MATLAB自带的编译器进行编译。

      (3)出现Compiler: LccC 2.4.1 
           Location:D:\PROGRAM FILES\MATLAB71\sys\lcc 
           Are thesecorrect?([y]/n):   输入 y

      (4)  出现DllRegisterServer in D:\ProgramFiles\MATLAB71\bin\win32\mwcommgr.dll succeeded 

          显示编译成功

     c.在命令窗口输入mcc –m welcome 需注意 welcome 为程序中的主程序名称,若主程序为main.m 则输入mcc –m  welcome 默认生成 welcome.exe可执行文件。

     d.若需要在没安装MATLAB机器上运行welcome.exe,需要进行M文件编译机器上的MCRinstaller.exe与(MATLAB 安装目录下MATLAB7.1\toolbox\compiler\deploy\win32)编译生成的相相关文件一起拷贝至待运行机器中。接着点击运行MCRinstaller.exe安装运行welcome.exe的基本编译环境,其次是要将MCRinstaller.exe安装目录\runtime\win32”这个路径添加到该计算机的环境变量中,具体添加的方法是:右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。

      e.点击welcome.exe运行。MATLAB程序生成可执行文件,并在未安装MATLAB机器上运行成功。

    

辅助事项:

(1) 在生成可执行文件时出现问题:可能的原因是本机环境或自身操作出现问题,若仍无法解决,可考虑换台机器进行编译和可执行文件生成。(个人就是在exe生成时出现这样那样的问题,仍无法解决,最后换台机器成功生成,目前本机出现的原因仍未解决 :))

(2) 在新机器上运行时出现问题:可能的原因是exe可执行文件只打包.m和.fig文件,如果在整个程序运行过程中调用了外部数据,需要将外部数据与编译生成的文件同时拷贝,才能成功运行。

(3) 在用MATLAB LCC编译器生成可执行文件时将出现DOS的黑色窗口,如果想去除需要安装VC进行编译,网上有相关的资料参考

 总结:两种方法都可以达到保护源代码的目的,但是各有各的优缺点。生成p文件的优点是方法简单,生成文件大小只是源代码的3倍左右,缺点是不能脱离matlab环境运行。生成.exe文件的优点是可以脱离matlab单独运行,缺点是生成的文件大小是原来的几千倍(当然包含那些.dll文件,体积最庞大的一部分)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值