欢迎光临散文网 会员登陆 & 注册

如何快速加密MATLAB代码 | pcode

2021-07-24 13:44 作者:图通道  | 我要投稿

图图今天教大家如何利用P代码对MATLAB的源代码(.m文件)进行加密。

MATLAB代码加密

我们为什么要对代码进行加密? 大多数的MATLAB用户都在进行复杂算法的设计,或者非常个性化的GUI软件开发,这一过程通常非常费时费力,甚至需要严格保密。如果我们想让其他人用上自己开发的代码(所实现的功能),又不想让对方知道源代码,就需要对代码进行加密。



MATLAB出了2种加密.m文件的解决方案:

A 生成独立应用程序

使用MATLAB Compiler将源代码文件生成独立应用程序(.exe),将.exe分发给其它人。



B 生成P代码

将某些或全部源代码文件转换为一种名为P代码的文件(文件扩展名为 .p)。P代码内的内容是无法查看的。

A方案的优点是安全性高,但是打包的独立应用程序安装包非常大,需要安装匹配MATLAB版本的runtime环境才能运行(runtime需要另外安装,通常有1G左右大小),且并非所有的内容都能很好的打包,比如图图的FigureBest软件天生不能打包成.exe文件运行。这样打包的应用非MATLAB用户基本无法使用。

B方案的优点是非常灵活,可以加密部分代码或者全部代码(下方展示了部分加密的代码),无论是加密还是最终运行速度都极快。但是缺点也很明显,就是安全性比较低,破解是可能的。



P代码

本期推送里仅教大家使用P代码进行加密,关于MATLAB Compiler的使用后面有机会再补充。

p意思是预解析(preparsed version)。即将.m文件里的代码预解析一遍,生成p文件。当再次调用时,实际上调用的就是.p文件。当MATLAB将某文件转换为p代码文件时,该文件将进行模糊处理而非加密。虽然.p文件中的内容难以理解,但不应将其视为安全的。(真正的大大大大佬是可以破解的,不过可能会被M公司狠狠地处理;对于我们这些小白就和加密是一样的。)


p代码转换相比打包成独立应用要简单和方便很多,如果你只是想小范围的分享你的代码又不想别人知道你的实现细节,就可以考虑用p代码的形式实现。



p代码如何生成

m代码到p代码的转换是通过调用pcode函数实现。

pcode(fun)

对 fun.m 中的代码进行模糊处理并生成名为 fun.p 的文件,即所谓的p文件。如果fun是一个文件夹,则该文件夹中的所有脚本或函数文件都在p文件中进行模糊处理。MATLAB 在当前文件夹中创建p文件。原始的 .m 文件或文件夹可以位于搜索路径上的任何位置。

pcode(fun1,...,funN)

从列出的文件创建p文件。如果输入了任意个文件夹,则 MATLAB 为各文件夹所包含的每个 .m 文件创建一个p文件。

pcode(fun,'-inplace')

在脚本或函数文件所在的同一个文件夹中创建p文件。



p代码如何调用

调用方式和.m文件一模一样,只不过不能直接双击打开.p文件。创建好.p文件后将同名的.m文件移出+备份以避免冲突!

注意:在执行中 P 文件优先于对应的 MATLAB 代码文件。


- 公众号后台回复`全家桶`获取所有作品;

- 图图的MATLAB交流群:1129425848;

如何快速加密MATLAB代码 | pcode的评论 (共 条)

分享到微博请遵守国家法律