日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

license文件生成原理

發(fā)布時(shí)間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 license文件生成原理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
byte解密weblogic加密oraclehex
  • 現(xiàn)在很多J2EE應(yīng)用都采用一個(gè)license文件來(lái)授權(quán)系統(tǒng)的使用,特別是在系統(tǒng)購(gòu)買的早期,會(huì)提供有限制的license文件對(duì)系統(tǒng)進(jìn)行限制,比如試用版有譬如IP、日期、最大用戶數(shù)量的限制等。??
  • ??
  • license控制的方法又有很多,目前比較流行,只要設(shè)計(jì)的好就很難破解的方法就是采用一對(duì)密匙(私匙加密公匙解密)來(lái)生成License文件中的Sinature簽名內(nèi)容,再通過(guò)Base64或Hex來(lái)進(jìn)行編碼。比如原BEA公司現(xiàn)在是Oracle公司的WebLogic就采用的是這種方法來(lái)設(shè)置License文件。??
  • ??
  • 這里只進(jìn)行一個(gè)比較簡(jiǎn)單的實(shí)現(xiàn):??
  • ??
  • 一共三個(gè)類:??
  • ??
  • A.KeyGenerater類生成公鑰私鑰對(duì)??
  • ??
  • B.Signaturer類使用私鑰進(jìn)行簽名??
  • ??
  • C.SignProvider類用公鑰驗(yàn)證??
  • ??
  • 公鑰和私鑰使用Base64加密Base64這個(gè)類很多地方都可以查到。??
  • ??
  • ???
  • ??
  • 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.川江號(hào)子.cn".getBytes());?//?初始化隨機(jī)產(chǎn)生器???
  • ??
  • ???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("生成密鑰對(duì)失敗");???
  • ??
  • ???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);???
  • ??
  • ???//?用私鑰對(duì)信息生成數(shù)字簽名???
  • ??
  • ????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編碼的公鑰,并構(gòu)造X509EncodedKeySpec對(duì)象???
  • ??
  • ???X509EncodedKeySpec?bobPubKeySpec?=?new?X509EncodedKeySpec(Base64.decode(pubKeyText));???
  • ??
  • ???//?RSA對(duì)稱加密算法???
  • ??
  • ???KeyFactory?keyFactory?=?KeyFactory.getInstance("RSA");???
  • ??
  • ???//?取公鑰匙對(duì)象???
  • ??
  • ???PublicKey?pubKey?=?keyFactory.generatePublic(bobPubKeySpec);???
  • ??
  • ???//?解密由base64編碼的數(shù)字簽名???
  • ??
  • ???byte[]?signed?=?Base64.decode(signText);???
  • ??
  • ???Signature?signatureChecker?=?Signature.getInstance("MD5withRSA");???
  • ??
  • ???signatureChecker.initVerify(pubKey);???
  • ??
  • ???signatureChecker.update(plainText.getBytes());???
  • ??
  • ???//?驗(yàn)證簽名是否正常???
  • ??
  • ???if?(signatureChecker.verify(signed))???
  • ??
  • ????return?true;???
  • ??
  • ???else???
  • ??
  • ????return?false;???
  • ??
  • ??}?catch?(Throwable?e)?{???
  • ??
  • ???System.out.println("校驗(yàn)簽名失敗");???
  • ??
  • ???e.printStackTrace();???
  • ??
  • ???return?false;???
  • ??
  • ??}???
  • ??
  • ?}???
  • ??
  • }?
  • 轉(zhuǎn)載于:https://www.cnblogs.com/lvdongjie/p/4267629.html

    總結(jié)

    以上是生活随笔為你收集整理的license文件生成原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 男女视频一区二区 | 国产精品大全 | 免费国产区 | 永久久久久久 | 另类视频一区 | 日本在线免费看 | 国产日批视频在线观看 | 国产xxxxxxxxx| 免费啪啪小视频 | 久久午夜精品人妻一区二区三区 | 国产免费黄色小视频 | 日韩视频一区二区三区 | 成人av免费在线观看 | 久久黄色av| 国产乱码精品一区二三赶尸艳谈 | 91色区| 欧美91视频| 亚洲欧美精品suv | 国产性生活视频 | 久久96视频| v8888av| 中文字幕观看 | 91视频xxx| 国产无遮挡呻吟娇喘视频 | 日韩熟女一区二区 | 久久久久久久久国产精品一区 | 国产免费一区二区三区在线播放 | 亚洲AV无码久久精品浪潮 | 欧美资源在线 | 操女人逼逼视频 | 麻豆国产精品视频 | 在线男人天堂 | 美国一级黄色大片 | 清冷学长被爆c躁到高潮失禁 | 日韩成人精品视频 | 婷婷六月天 | 国产做爰xxxⅹ性视频国 | 日本道中文字幕 | 中文字幕免费高清网站 | 亚洲午夜久久久久久久久久久 | 免费在线观看黄色片 | 国产农村老头老太视频 | 午夜天堂 | 精品久久久久久无码国产 | 美女扒开屁股让男人桶 | 麻豆成人av| 在线观看不卡av | 欧美性生交xxxxx久久久缅北 | 动漫美女放屁 | 国产日韩在线一区 | 国产精品亚洲lv粉色 | jizz成熟丰满老女人 | 国产露脸150部国语对白 | 在线观看视频www | www.中文字幕av| 国产精品成人一区二区网站软件 | 天堂av在线电影 | 精品一区二区久久 | 在线看你懂得 | 免费观看视频一区二区 | 全部孕妇毛片丰满孕妇孕交 | 99热99在线 | 欧美 日韩 国产 成人 在线观看 | 午夜网站视频 | 91精品国产一区二区在线观看 | 成人短视频在线播放 | 人人干人人草 | 老司机午夜免费精品视频 | 国产十区 | 成人免费xxxxxx视频 | 性色国产成人久久久精品 | 亚洲老妇色熟女老太 | 懂色av蜜臀av粉嫩av分 | 五月婷婷丁香久久 | 亚洲色图少妇 | 亚洲精品久久久久久国产精华液 | 欧美一级黄色片子 | 国产又猛又黄 | 韩国av免费在线 | 欧亚免费视频 | 香蕉视频免费在线观看 | 成人网站免费观看 | 久久影院视频 | 色草在线 | 香蕉污视频在线观看 | 美女免费av | 中文字幕一级二级三级 | a国产 | 制服丝袜影音先锋 | 久操精品在线 | 久草资源在线播放 | 亚洲天堂第一 | 亚洲a一区二区 | 色哟哟官网 | 日本黄色三级网站 | 国产精品成人自拍 | 同心兄弟| а√中文在线资源库 | 日韩亚洲第一页 |