license文件生成原理
来源:互联网 发布:python代码示例 编辑:程序博客网 时间:2024/06/04 18:29
Open License,开源的许可生成器,实现你自己的许可管理器/应用
2005-07-20 11:57 by 灵感之源, 6122 阅读, 8 评论, 收藏, 编辑为了给自己的软件产品添加使用限制,如时间长度、使用次数等,往往会使用许可。
许可中包括了使用限制的各种信息,包括:
1、时间长度
2、使用次数
3、版本升级
4、在线注册
5、安装次数
等等。
或许大家会采用自己的实现方式,但市面上流行通用的,比较著名的应该是:XHEO,商业软件,俺不喜欢;)
我最近发现了Open License ,它是SP Extreme公司开发并开源的许可管理器。
它的特点:
1、图形化界面创建许可;
2、支持产品许可;
3、512位加密;
4、许可钥匙;
5、99.9%防破解;
6、各种许可限制;
7、设计/运行的支持;
这里下载Open License。
老实话,这个Open License比较明显地在抄袭XHEO,不过这样更好,尽量把XHEO的功能都弄过来,哈哈。
官方提供了测试例子,我下载并测试了一下,无论我怎么折腾它(强行修改许可文件等),例子照样正确运行,嘿,挺好玩的。
许可中包括了使用限制的各种信息,包括:
1、时间长度
2、使用次数
3、版本升级
4、在线注册
5、安装次数
等等。
或许大家会采用自己的实现方式,但市面上流行通用的,比较著名的应该是:XHEO,商业软件,俺不喜欢;)
我最近发现了Open License ,它是SP Extreme公司开发并开源的许可管理器。
它的特点:
1、图形化界面创建许可;
2、支持产品许可;
3、512位加密;
4、许可钥匙;
5、99.9%防破解;
6、各种许可限制;
7、设计/运行的支持;
这里下载Open License。
老实话,这个Open License比较明显地在抄袭XHEO,不过这样更好,尽量把XHEO的功能都弄过来,哈哈。
官方提供了测试例子,我下载并测试了一下,无论我怎么折腾它(强行修改许可文件等),例子照样正确运行,嘿,挺好玩的。
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 (java.lang.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 (java.lang.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;
- else
- return false;
- } catch (Throwable e) {
- System.out.println("校验签名失败");
- e.printStackTrace();
- return false;
- }
- }
- }
- 顶
- 0
- 踩
- 0
0 0
- license文件生成原理
- license文件生成原理
- jive license保护原理
- matlab2013a 注册文件license
- PHP生成HTML文件原理
- PHP生成HTML文件原理
- PHP生成HTML文件原理
- 生成license用于验证证书
- win10系统 安装modelsim64位的无法生成license文件的解决办法
- License控制实现原理(20140808)
- 求IDL8.1license文件
- .htaccess和license文件编写
- 项目license证书文件找不到
- smartsvn9破解及license文件
- JSP生成HTML静态文件原理
- 使用Solution Manager生成系统license
- 获取机器的hostid准备生成license
- License
- 三维坐标旋转矩阵
- 即将一年学习总结
- C++ string类实现
- C++程序员面试宝典——基本概念易错题
- LeetCode题解--2. Add Two Numbers
- license文件生成原理
- 范数
- 同余定理
- 《大话设计模式》——代理模式
- UESTC--1251--谕神的密码(贪心)
- 1003. Emergency
- 贪心+好题+Yogurt factory
- Oracle手边常用70则脚本知识汇总
- cocos2dx基础——滚动视图CCScrollView(TP:68D951F8)