java licence生成例子

时间:2015-12-21 05:49:15
【文件属性】:

文件名称:java licence生成例子

文件大小:3KB

文件格式:TXT

更新时间:2015-12-21 05:49:15

java license

java中使用公钥加密私钥解密原理. 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; return false; } catch (Throwable e) { System.out.println("校验签名失败"); e.printStackTrace(); return false; } } }


网友评论

  • 可惜了,花了钱,和网上搜索到的一样。
  • ……资源就和外边放着的一模一样,应该说楼主描述太详细了呢,还是……
  • base64 是import哪個包的呀,求指點,代碼都不全
  • 太坑了,完全不值两分,跟网页上复制的都是一样的,唉,我的两分啊。 它是txt文档,里面只有三个方法,import的东西都木有,我本来是想看这个的
  • 很简单,可以参考一下!感谢分享!
  • 这个很实用,xiexie
  • 对于我们初学者来说,这个很实用,需要细细研究下
  • 这个很简单,也很实用
  • 这个,太简单了
  • 很简单,很实用
  • ……资源就和外边放着的一模一样,应该说楼主描述太详细了呢,还是……
  • 这个,太简单了。