我有一堆R脚本,我在一台
Windows机器上运行,并希望确保代码未被读取的人不被阅读.在
Linux的盒子上,我可以把R代码包裹在一个bash脚本#!并加密(甚至是有限的生命)可执行的shell脚本.在Windows下,我有什么选择在类似的行中做某事?
我的回答有点迟了,但我相信这是一个很好的问题.不幸的是,我不相信现在有一个解决方案,至少是一个容易的解决方案.
困难是常见的,因为对于大多数解释型语言(包括R),通常可以打开正在运行的所有命令的日志记录和检查.这可以否定许多技巧来混淆代码.
对于那些喜欢认为代码开放的人来说,好的,应该知道,混淆代码的常见原因是,如果正在咨询雇佣多个供应商的客户端.客户端从供应商A采集脚本并不常见,并要求供应商B为什么它不能与其系统一起使用. (这可能是由一个低级别的IT人员完成,而不是负责NDA合同的人员.)如果A& B是竞争对手,A的代码刚被交给B.当脚本==严重的程序时,严重的代码已被放弃.
我所看到的方式是:
>调用编译语言,并使用标准的保护措施.
>在不同的服务器上托管可执行文件,并使用对服务器的调用执行计算. (在R中,有多个服务器端选项.)
>在语言中使用编译(预处理/字节码)代码.
当代码可能广泛分发时,选项2实际上更容易和更好,而不仅仅是出于IP原因.一个主要优点是它可以让您升级代码,而无需经历站点范围的发布过程.如果需要新的库,没有问题 – 更新服务器.
选项3在Matlab中用.p文件完成,可以在Windows上使用py2exe进行Python.在R中,新的字节码编译可能是类似的,但是我不足以解决R语境中的.Rc文件和Matlab上下文中的.p文件之间的差异.有关编译器的更多信息,请参阅:http://www.inside-r.org/r-doc/compiler/compile