由于Java在1月份更新了其安全设置,我无法承受可靠的证书在线登录我的jar文件,即每年约200美元,我刚刚将Processing2 jar文件转换为Processing1.5 JavaScript文件。现在问题是,为了让访问者看到js输出,我必须让他们至少“读取”我的pde文件,而我不想公开我的源代码。
那么如何在不发布源代码的情况下展示我的作品呢?非常感谢!
/ var / www / html / visual:
下的处理文件夹-rw-r--r--. 1 root root 2709 Sep 10 21:03 main.pde
-rw-r--r--. 1 root root 238 Mar 6 15:12 proj01.html
-rw-r--r--. 1 root root 231867 Mar 4 23:55 processing-1.4.1.min.js
html文件看起来像(所以访问者知道我的pde文件名):
<!DOCTYPE html>
<html>
<head>
<script src="processing-1.4.1.min.js"></script>
</head>
<body>
<canvas data-processing-sources="main.pde"></canvas>
</body>
</html>
并且自签名jar文件被Java Update51阻止,除非访问者手动将安全级别设置为最低级别。只有从Symantec或Godaddy等服务购买的证书才能让jar文件在浏览器中顺利运行。
答案 0 :(得分:1)
是的,隐藏代码(以及任何其他资产)的方法很简单。它们不是防弹的,它与我编译代码一样接近,而不会过度偏执。你在这里看到的是一个自动执行的匿名函数,除了灰尘和灰烬之外什么也没有留下(当然还有正在运行的processing.js草图)。在该函数内部进行处理代码,base64编码(参见标记点,见下文以获取更多信息)
它还将导入库,设置画布并运行它。除了Processing集之外没有pde,没有脚本元素,没有canvas-id。除了全局Processing库对象中的某个地方之外没有对代码的引用,在5分钟后找不到它,所以我觉得它足够安全。)
(function(){
var lib,code;
code=atob("/*YOUR BASE64 ENCODED CODE GOES HERE*/");
lib = document.createElement("script");
lib.src="processing-1.4.1.min.js";
document.head.appendChild(lib);
lib.onload=function(){
var canvas,pjs;
canvas = document.createElement("canvas");
document.body.appendChild(canvas);
pjs = new Processing(canvas,code);
this.onload=null;
}
})()
有关base64编码的其他信息: 此方法将任何内容转换为Datastring。 您使用btoa()进行编码,或使用atob()进行解码。有些网站会为你做编码,如果你的大文件不像你的情况那样在javascript中,那就更舒服了。
它可以应用于各种资产,因此可以创建具有声音和纹理的整个游戏,而无需外部资源。但它只是表示数据的另一种方式,它并不是真正“编译”的,因为编码不会永久地改变代码,除了在字符串上运行atob()之外,它不需要做任何事情,它会立即以原始形式返回。 / p>
有关如何运行脚本的其他信息: 您可以在dom树中的某处隐藏脚本标签(可能是最简单的解决方案)将其加载到外部javascript(甚至可以尝试使用模糊的文件名,省略.js扩展名或使用另一个扩展名)这里您还可以应用缩小。你的base64字符串很可能是你代码的95%,其余的将被缩小,几乎与编码数据无法区分。
在各方面都有很多方法可以改进,但我想坚持我认为对你最实用的方法。如果你想要更多,请问。
答案 1 :(得分:0)
你可以编辑html文件,不要包含你可以删除的pde文件的链接。 不过,您可以查看页面的html源代码。
您可以创建自签名证书来签署.jar文件。 Here是我几年前上传的自签名小程序的一个例子。 我已使用there instructions签名。
让访问者查看来源可能对他们有用。