使用JSL加密脚本以进行外接程序开发我维护了几个插件,对于其中的一些插件,我希望在构建时更新其中包含的脚本中的几个变量。 因此,我想编写一个脚本来打开脚本文件,进行一些串联或替换,然后加密整个文件并将其保存到某个位置(以获取脚本文件列表)。 然后,我可以通过以下方式使用出色的加载项生成器: @Justin_Chilton构建外接程序。 我找不到JSL函数来加密脚本,它是否存在或可以使用其他实用程序来完成?
脚本编写回复:使用JSL加密用于外接程序开发的脚本可以使用Main Menu()函数通过JSL传递Encrypt Script命令。
Main Menu( "encrypt script","Script 10" );
其中“脚本10”是要加密的脚本窗口的名称。
但是,接下来会发生的是弹出询问密码的对话框窗口,我认为这不是您想要的
回复:使用JSL加密脚本以进行外接程序开发也许只使用带有值的jsl / jmp / plaintext文件,并使用加密脚本中的include()或open()或loadtextfile()。
对于一组命名参数,较小的数据表可能是一个不错的选择。 或是用来设置一些变量的JSL片段。 可以将只有文本42的名为X.jsl的文件加载为parm = include(“ x.jsl”);如果X包含{42,“ Fred”},例如{parm,name} = include(“ x.jsl”),则可以使用列表进行更复杂的设置。
回复:使用JSL加密脚本以进行外接程序开发感谢您的建议!
这个想法是创建一个可以自我破坏的加载项,该加载项可以工作一段时间,并在某个日期停止运行后再进行保护(保护IP)。 因此,每次构建外接程序时,我都希望在脚本中硬编码一个新的到期日期,这样才能通过在某个地方编辑日期字段来克服这个失效日期。 如果我将到期日期放在外部脚本文件中,则每次都必须手动对其进行加密。 出于同样的原因,不能选择数据表。
回复:使用JSL加密脚本以进行外接程序开发这样的东西?
mySecretKey = "The quick brown fox";
aa = [=> ];
aa["expiredate"] = "1jan2022";
aa["checkcode"] = Hex( Blob MD5( Char To Blob( mySecretKey || expiredate ) ) );
Save Text File( "$temp/license.txt", As JSON Expr( aa ) );
///////////////////
bb = Parse JSON( Load Text File( "$temp/license.txt" ) );
If( Hex( Blob MD5( Char To Blob( mySecretKey || bb["expiredate"] ) ) ) == bb["checkcode"],
Print( "ok: " || bb["expiredate"] ),
Print( "bad" )
);
将密钥嵌入加密的脚本中,以便您可以对其进行检查。
该文件看起来像
{“校验码”:“ B7611676E821AA1ECC4CB5D6F02C6BA9”,“过期”:“ 1jan2022”}
回复:使用 JSL 加密插件开发脚本谢谢@Craige_Hales这是一个有趣的解决方案,嵌入了到期日期和校验和。
第 5 行编码错误的小修复:
mySecretKey = "The quick brown fox";
aa = [=> ];
aa["expiredate"] = "1jan2022";
aa["checkcode"] = Hex( Blob MD5( Char To Blob( mySecretKey || aa["expiredate"] ) ) );
Save Text File( "$temp/license.txt", As JSON Expr( aa ) );
///////////////////
bb = Parse JSON( Load Text File( "$temp/license.txt" ) );
If( Hex( Blob MD5( Char To Blob( mySecretKey || bb["expiredate"] ) ) ) == bb["checkcode"],
Print( "ok: " || bb["expiredate"] ),
Print( "bad" )
);
回复:使用 JSL 加密插件开发脚本谢谢。 在我意识到它想要成为一个 JSON 解决方案之前,该变量是第一个版本遗留下来的。
这类似于 JMP 对 PER 文件(不是 JSON)所做的;您也可以通过将其他变量添加到串联中来锁定其他变量,例如用户或站点名称。
您应该在运行您的应用程序后使用 ShowGlobals() 以确保您的秘密不容易被发现。