我正在为应用程序开发一些外部模块。
这些模块是BPL文件,如果存在于应用程序文件夹中,则应用程序会加载它们并使用内部可用的任何内容。
如何防止客户共享这些模块?
我需要他们被授权使用模块(逐个模块)。
要获得某种许可,注册模块,最好的方法是什么?
由于
答案 0 :(得分:2)
我假设您的客户都有某种唯一ID(序列号,许可证号)。当您合法地向您的某个客户提供BPL时,请给他两个文件:BPL本身+包含BPL名称的哈希值+用户许可证号的文件。如果无法验证哈希值,请不要加载BPL。确保你没有对BPL本身进行散列,你最终会因为他们感染了病毒而无法使用你的BPL的烦恼客户!
让您的BPL导出一个类似于function OkForClient(ClientID:string):Boolean
的函数。这允许您将验证从BPL更改为BPL。
花一周时间学习非对称加密,将第一个选项中的哈希文件替换为攻击者无法复制的内容,即使他们确实知道算法。