java web系统如何制作License

 

 通过license机制来保护我们的安全,可以限定只有购买了license的用户在特定的机器上使用我们的软件。

 

   license机制有以下的主要功能点:

  • 应用程序可以创建以及验证绑定给用户、系统等实体的license
  • 防止用户随意拷贝软件和license
  • licenses可以是永久性的或者临时性的(在某个特定时期内有效)
  • licenses的验证由JAVA Security API提供的数字签名机制来实现
  • license安装模块需要用特殊机制对其进行保护,以防被反编译轻易破解

 

License文件信息代码    收藏代码
  1. Product.name=产品名称  
  2. Product.version=版本  
  3. License.type=license类型  
  4. License.expiry=license有效期  
  5. Server.macaddress=mac地址  
  6. signature=302d0215008b4ef2390e11d28f5ea7b86f71ba5168bfeaa6b402146c77706b985be68cc515c6079b31ad50e3f17552  
  7.    

 

其中最下面一串数据为根据上面几项基本信息签名产生的注册号

 

 

Licensefactory代码    收藏代码
  1. public Interface LecenseFactory{  
  2.     /**   
  3.      *生成公钥、私钥对。公钥公开,注意保管好私钥(如果泄露,则有可能被hacker随意创建license  
  4.      */  
  5.     public static void generateKey() throws Exception;  
  6.     /** 用私钥对license进行数据签名*/  
  7.     public static synchronized void sign(License license) throws Exception;  
  8.     /**  
  9.      * 验证license是否合法。  
  10.      * 首先验证Mac地址是否有改变,有的话则非法。(防止用户自由拷贝软件)。  
  11.      * 然后根据公钥验证签名是否合法。  
  12.      */  
  13.     boolean validate(License license) throws Exception ;  
  14. }  

 

 

License创建及验证步骤代码    收藏代码
  1. 第一步:生成公钥、私钥对。公钥公开,注意保管好私钥(如果泄露,则有可能被随意创建license)。  
  2. LicenseFactory.generateKey();  
  3. 第二步:根据产品、版本、Mac地址、有效期等信息,签名产生注册号,并将该注册号复制到license中。  
  4. 第三步:利用公钥对license进行合法性验证。可以在软件代码的重要模块中加入下面的验证,比如登录模块  

 

你可能感兴趣的:(java,Web,Security)