license
- 格式:rtf
- 大小:1.21 KB
- 文档页数:1
license是如何⽣成的license⽣成原理现在很多J2EE应⽤都采⽤⼀个license⽂件来授权系统的使⽤,特别是在系统购买的早期,会提供有限制的license⽂件对系统进⾏限制,⽐如试⽤版有譬如IP、⽇期、最⼤⽤户数量的限制等。
⽽license控制的⽅法⼜有很多,⽬前⽐较流⾏,只要设计的好就很难破解的⽅法就是采⽤⼀对密匙(私匙加密公匙解密)来⽣成License⽂件中的Sinature签名内容,再通过Base64或Hex来进⾏编码。
⽐如原BEA公司现在是Oracle公司的WebLogic就采⽤的是这种⽅法来设置License⽂件。
这⾥只进⾏⼀个⽐较简单的实现:⼀共三个类:A.KeyGenerater类⽣成公钥私钥对B.Signaturer类使⽤私钥进⾏签名C.SignProvider类⽤公钥验证公钥和私钥使⽤Base64加密Base64这个类很多地⽅都可以查到。
KeyGenerater类:public class KeyGenerater {private byte[] priKey;private byte[] pubKey;public void generater() {try {KeyPairGenerator keygen = KeyPairGenerator .getInstance("RSA");SecureRandom secrand = new SecureRandom();secrand.setSeed("www.川江号⼦.cn".getBytes()); // 初始化随机产⽣器keygen.initialize(1024, secrand);KeyPair keys = keygen.genKeyPair();PublicKey pubkey = keys.getPublic();PrivateKey prikey = keys.getPrivate()pubKey = Base64.encodeToByte(pubkey.getEncoded());priKey = Base64.encodeToByte(prikey.getEncoded());System.out.println("pubKey = " + new String(pubKey));System.out.println("priKey = " + new String(priKey));} catch (ng.Exception e) {System.out.println("⽣成密钥对失败");e.printStackTrace();}}public byte[] getPriKey() {return priKey;}public byte[] getPubKey() {return pubKey;}}Signaturer 类:public class Signaturer {public static byte[] sign(byte[] priKeyText, String plainText) {try {PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decode(priKeyText)); KeyFactory keyf = KeyFactory.getInstance("RSA");PrivateKey prikey = keyf.generatePrivate(priPKCS8);// ⽤私钥对信息⽣成数字签名Signature signet = java.security.Signature.getInstance("MD5withRSA");signet.initSign(prikey);signet.update(plainText.getBytes());byte[] signed = Base64.encodeToByte(signet.sign());return signed;} catch (ng.Exception e) {System.out.println("签名失败");e.printStackTrace();}return null;}}SignProvider 类:public class SignProvider {private SignProvider() {}public static boolean verify(byte[] pubKeyText, String plainText,byte[] signText) {try {// 解密由base64编码的公钥,并构造X509EncodedKeySpec对象X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(Base64.decode(pubKeyText)); // RSA对称加密算法KeyFactory keyFactory = KeyFactory.getInstance("RSA");// 取公钥匙对象PublicKey pubKey = keyFactory.generatePublic(bobPubKeySpec);// 解密由base64编码的数字签名byte[] signed = Base64.decode(signText);Signature signatureChecker = Signature.getInstance("MD5withRSA");signatureChecker.initVerify(pubKey);signatureChecker.update(plainText.getBytes());// 验证签名是否正常if (signatureChecker.verify(signed))return true;elsereturn false;} catch (Throwable e) {System.out.println("校验签名失败");e.printStackTrace();return false;}}}。
license设计方案在软件开发领域,软件授权是一个非常重要的议题。
对于软件的使用、分发和修改等都需要授权。
为保护自己的创作权益和用户的合法权益,开发者需要通过授权机制来管理软件的使用和分发。
而授权机制的核心就是授权协议,即License。
设计License的过程并不是一件简单的事情,需要考虑许多因素。
本文将从不同角度分析如何设计一个合适的License方案。
一、 License种类首先需要考虑的是License的种类。
存在许多的License类型,每种类型都有其独特的使用规则和限制。
常见的License类型包括:1、GPL:GNU通用公共许可证,是自由软件的一种授权方式,保障用户可以自由地和开放地使用、阅读、拷贝、分发、研究和修改软件。
2、 MIT:麻省理工学院许可证,是一个自由软件授权协议,允许 individuals 和公司复制、修改和发布该软件。
3、 BSD: BSD许可证,是一种自由软件的授权方式,最初由加州大学伯克利分校的计算机研究小组发布,其重要特点是允许开发者在BSD授权软件的基础上修改、发布、销售和使用开发后的软件,而无需向BSD授权软件的原作者支付任何费用。
二、 License适用范围授权协议的适用范围是非常关键的一个问题。
一份好的授权协议需要考虑到用户的合法权益,同时也要维护开发者的利益。
为达到这个目的,我们需要考虑授权协议的适用范围。
1、单个项目许可证单个项目许可证是一种常见的授权方式。
这种方式下,License只适用于单个项目,授权用户只可使用授权软件的某个特定版本,不能对软件进行修改或者重新分发。
2、版本许可证版本许可证则是针对软件的不同版本进行授权的。
一个版本许可证允许用户在当前版本以及未来的比这个版本更新的版本中使用授权软件。
3、用户许可证用户许可证是针对授权软件的使用者进行许可的。
授权用户可以在他们所拥有的计算机中安装授权软件,但是不可以在其他计算机上使用授权软件。
license设计方案一、背景介绍在计算机软件开发中,为了保护软件的知识产权和规范软件的使用,通常需要使用许可证(License)来约束用户对软件的使用。
在本文中,将提出一个针对软件许可证的设计方案,以达到保护软件权益和方便用户的目的。
二、设计原则1. 合法合规:许可证应符合国家相关法律法规的规定,保证软件开发商的合法权益。
2. 灵活可扩展:许可证应具备一定的灵活性,以适应不同软件的业务需求,同时方便后续的升级和扩展。
3. 易于管理:许可证应采用简单易懂的方式进行管理,方便软件开发商对用户的授权进行管理和维护。
4. 安全可靠:许可证应具备一定的安全性,防止非法复制和篡改,确保软件的使用权益。
三、设计方案根据以上设计原则,本方案主要采用以下几个关键要素进行设计:加密算法、许可证格式、许可证管理和许可证验证。
1. 加密算法为了确保许可证的安全性,本方案采用对许可证进行加密的方式。
采用对称加密算法,如AES、DES等,以保护许可证的机密性和完整性。
2. 许可证格式许可证应具备一定的结构化,以方便软件开发商对许可证的管理和用户对许可证的查看。
一般来说,许可证应包含以下信息:- 软件名称和版本号:明确软件的名称和版本信息。
- 使用权限:规定用户能够使用的功能、模块或者时间限制。
- 授权方式:明确授权方式,如单机授权、网络授权等。
- 授权期限:定义许可证的有效期限。
- 许可证编号:唯一标识许可证的编号,方便管理和维护。
3. 许可证管理为了方便软件开发商对许可证的管理和维护,可以采用许可证管理系统进行许可证的生成、分发和撤销等操作。
许可证管理系统可以提供友好的界面,方便管理人员进行操作,并且提供许可证的批量生成和批量分发等功能。
4. 许可证验证为了防止非法复制和篡改,许可证应具备一定的验证机制。
在软件中集成许可证验证模块,能够对许可证的有效性进行验证,并在验证失败时限制软件的功能访问。
验证模块可以通过校验许可证的加密信息和数字签名等方式来确保许可证的有效性。
License授权管理制度一、总则为规范公司内部License授权管理,保证License使用的合规性和安全性,制定本制度。
二、适用范围本制度适用于公司内所有部门和员工的License授权管理工作。
三、License授权管理的责任1. 公司领导公司领导要高度重视License授权管理工作,制定明确的授权管理政策和流程,并对相关部门的授权工作进行指导和督促。
2. 授权管理部门公司应当设立专门的授权管理部门,负责License授权管理的具体工作。
授权管理部门应当制定详细的授权管理规定和流程,并对员工进行相关的培训和指导。
3. 部门经理各部门经理要对本部门的License授权管理工作负责,确保本部门的License使用合规并安全。
4. 员工公司所有员工都要严格遵守License授权管理制度的规定,并按照规定手续进行License使用和申请。
四、License授权管理的流程1. 授权申请员工向授权管理部门提出License授权申请,需要提供相关的证明材料和申请事由。
2. 授权审批授权管理部门负责对申请进行审批,根据申请人的具体情况和部门需求进行授权审批。
3. 授权发放经过授权审批后,授权管理部门将授权的License发放给申请人,并记录相关的授权信息。
4. License追踪授权管理部门负责对已发放的License进行追踪管理,确保License使用的合规和安全。
五、License授权管理的规定1. License使用范围License只能在规定的范围内使用,不得擅自超范围使用。
2. License保密所有获得License授权的员工都要严格保密,不得将License信息泄露给外部人员或机构。
3. License转让未经授权管理部门批准,不得将License转让给他人或机构。
4. License更新License到期前,申请人应当及时向授权管理部门申请更新License,确保License的持续有效。
5. License使用监控授权管理部门应当对License使用情况进行定期监控,并及时发现和解决问题。
2 License简介定义License:许可证,是供应商与客户对所销售/购买的产品(这里特指软件版本)使用范围、期限等进行授权/被授权的一种合约形式,通过License,客户获得供应商所承诺的相应服务。
物理形式表现为License授权证书和License文件。
目的用户购买设备后,可以使用设备的基本功能。
当用户因业务拓展,需要使用增值特性或者对设备资源进行扩容时,可以购买设备对应功能或资源的License,以满足业务的需求。
通过License的控制,可以有效降低用户的成本。
用户根据实际需要,灵活的选择License,即可获得定制的功能。
License分类●License根据用途可以分为两种类型,商用类型(COMM)和非商用类型(DEMO)。
–商用类型正常情况下,依据合同规定购买的License,大部分License其期限一般为永久有效,部分License有固定期限限制。
用户购买的License都应属于商用类型。
–非商用类型用于测试、试用等特殊用途的临时License,有着严格的期限限制。
●License根据授权的内容可以分为功能型License和资源型License。
–功能型License功能型License控制用户对设备某项功能的使用,用户想要使用某受限功能,需要首先获得该功能的授权。
–资源型License资源型License控制用户对资源项数目的使用,用户想要使用对应资源项,需要首先获得该资源项的授权。
用户根据实际业务需要,可以不选择资源型License,使用产品默认支持的资源;也可以选择购买一个或者多个资源型License,同一个资源型License支持多次选择,用户可以任意组合,最终获得的资源数目为所有资源型License的资源之和。
说明用户选择资源型License时,需要注意资源总数不能超过产品支持的最大资源数目。
请联系华为办事处,获取产品支持的最大资源数目信息。
License特点License具有便利、安全和容灾的特点,为用户提供优质的服务。
浅析软件许可证授权软件许可证授权是某软件开发者使用特殊技术手段来规范用户按授权许可模式合法合理使用软件,其中包括约定软件的使用时长、使用功能、终端安装数量等。
这种技术是以授权许可文件的形式安装在使用者的计算机上。
授权许可文件采用与计算机软硬件信息绑定的方式来防止软件的非法盗用和越权使用。
绑定计算机的软件信息包括:计算机名、用户名、IP地址、注册表系统信息等。
绑定计算机的硬件信息包括:CPU、BIOS、硬盘、MAC地址等。
常规而言,绑定计算机硬件信息的授权许可方式比绑定计算机软件信息的授权方式安全性来的高,因为硬件信息相比软件信息要更加稳定,而且难以复制或伪造。
考虑到计算机的硬件有可能发生变动,可以采用智能判断方式,只要50%-90%的硬件信息没有改变,就认为是同一台计算机。
通常来说,授权内容与计算机软硬件信息的绑定过程和授权文件解析过程中计算机软硬件信息的比较是许可证授权机制的核心技术。
使用简单变换或对称加密算法的绑定机制是不安全的,因为可逆的绑定机制在软件运行时可以被跟踪出来,从而出现模拟绑定过程的注册机破解。
而使用非对称加密算法,即公私钥算法的绑定机制要安全的多。
因为私钥是放在服务上,由私钥完成授权内容与计算机软硬件信息的绑定。
授权许可文件由存储在客户端的公钥进行解密。
由于加解密过程不对称,而私钥和绑定过程无法跟踪,所以采用非对称加密算法的授权许可文件系统具有非常高的安全性。
互联网的逐渐普及和快速发展极大地改变了我们工作和生活的方式。
软件许可证授权技术也开始与互联网技术全面结合,达到了方便使用、节省成本和提高效率的目的。
基于互联网的软件授权许可证保护技术与使用额外硬件设备,如加密锁等的保护技术相比,有以下几方面优势:1.能够大大节约硬件、存储、物流、生产和管理成本。
2.可以实现软件的网络电子化发行,下载试用和激活都非常方便和快捷。
3.方便对软件授权进行统一管理,有助于提升企业管理水平和改善用户体验。
软件许可证软件许可证软件许可证是一种格式合同,由软件作者与用户签订,用以规定和限制软件用户使用软件(或其源代码)的权利,以及作者应尽的义务。
企业软件许可证概述为了应对越来越激烈的市场竞争,如压缩新产品周期、趋于完美的技术创新要求。
越来越多的企业在设计制造过程中不得不采购大量的高性能商业软件。
故而,对于研发企业来说,他们迫切的需要一款专业针对软件许可证管理的系统,以帮助企业建立健全的完整的许可证管理体系,提高企业的工作效率,降低企业的研发成本。
针对软件这些商业软件包括了:计算机辅助设计(Computer Aided Design,简称CAD)软件计算机辅助工程(Computer Aided Engineering,简称CAE)软件计算机辅助制造(Computer Aided Manufacturing,简称CAM)系统产品生命周期管理(product lifecycle management,简称PLM)系统产品数据管理(Product Data Management,简称PDM)系统......软件许可证管理问题这些商业软件对企业有着不可估量的作用,但是其极为昂贵的价格又成为企业进一步发展的巨大包袱,国内很多企业每年的软件维护成本动辄成百上千万。
由此在企业日常运作中也产生了一系列管理上的问题:如何科学规划好未来的软件采购量?如何完整详细了解昂贵许可证的使用情况?如何提高软件许可证的利用率?如何及时发现并解决许可证服务器的异常?如何防止他人的恶意抢占紧张的许可证资源?如何避免员工占用许可证资源导致的浪费情况?等等这些问题令IT管理部门十分头疼,迫切需要一套完整的软件许可证管理解决方案。
软件许可证浪费现象软件许可证集中管理解决方案——LMT LicManager,针对每个客户进行完整的全面的分析调查,提供整套完善的软件许可证管理解决方案,帮助客户管理软件许可证,全方位管理资源,杜绝浪费,更具人性化,解决客户所遇到的每个问题。