JAVA中license控制实现示例
《JAVA中license控制实现示例》由会员分享,可在线阅读,更多相关《JAVA中license控制实现示例(6页珍藏版)》请在装配图网上搜索。
1、JAVA中license控制实现实例目前诸多J2EE应用都采用一种license文献来授权系统的使用,特别是在系统购买的初期,会提供有限制的license文献对系统进行限制,例如试用版有譬如IP、日期、最大顾客数量的限制等。而license控制的措施又有诸多,目前比较流行,只要设计的好就很难破解的措施就是采用一对密匙(私匙加密公匙解密)来生成License文献中的Sinature签名内容,再通过Base64或Hex来进行编码。例如原BEA公司目前是Oracle公司的WebLogic就采用的是这种措施来设立License文献。这里只进行一种比较简朴的实现:一共三个类:A.KeyGenerater
2、类生成公钥私钥对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();
3、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(); Syst
4、em.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 s
5、tatic 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.getIns
6、tance(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() pu
7、blic 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 =
8、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;
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。