如何最好地保护.m文件?

时间:2017-08-30 07:08:52

标签: matlab

我有一个.m文件,我希望与朋友分享,但我对.m文件不感兴趣。有人可以用最好的方法帮助我将其转换为不可解码的文件吗? 我尝试通过输入pcode example.m将其转换为.p文件 但我不相信它真的在保护它。我能够使用以下链接将我的.p文件转换回.m文件。 https://sites.google.com/site/sippeyfunlabs/matlab-hacks/please-do-not-secure-your-password-in-matlab-p-code

这实际上证实了我的代码没有受到保护。

如果有人分享保护.m文件和共享的最佳方法,那就太好了。

由于

2 个答案:

答案 0 :(得分:2)

你可以build a mex file

这将完全模糊您的实际MATLAB代码,因为它将用C / C ++ / FORTRAN编写,但如果您的朋友确定足以查找它们,算法仍将存在。

答案 1 :(得分:2)

您自己提供的link已经表明混淆MATLAB代码非常困难:

  

事实上,MATLAB语言很难被保护甚至模糊。   这是由于后期绑定(或动态绑定)功能   MATLAB。 [...]与此相关的元信息量   功能基本上禁止任何添加代码级安全性的尝试。   简单地说,如果有一个MATLAB文件,它会调用一个函数foo   在里面。在运行时之前,MATLAB解释器甚至都不知道   如果foo是存储在M文件或内置函数或mex中的函数   功能甚至工作区功能句柄。因此,它必须存储foo   就像生成的P代码中的某个地方一样。

此页面上已经提到了最佳解决方案:

  

如果确实需要这样做,那么使用好的旧二进制文件就是一个   更好的解决方案。或者您可以将关键代码放在服务器上   来自用户。

  • 创建一个二进制文件,即mex文件(参见Wolfie的答案):请注意,在某种程度上,二进制代码也可以被反编译,特别是小编。
  • 在服务器上托管代码(并运行代码服务器端):这是保护代码的最佳方法。您应该让用户上传脚本的输入并返回结果。您还可以使用matlab脚本自动化此过程,以使此过程对用户透明。