您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

许可证lisence校验和代码混淆的实现原理

时间:2022-06-17 15:30:52  来源:  作者:平凡人笔记

源码

https://gitee.com/pingfanrenbiji/lic-auth

利用jdk keytool工具制作证书

利用jdk keytool工具生成证书

keytool -genkeypAIr -keysize 1024 -validity 3650 -alias "秘钥别名" -keystore "秘钥库名称.keystore" -storepass "秘钥库口令" -keypass "秘钥口令" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"
   
注意:所有口令必须包含字母数字
eg: 
keytool -genkeypair -keysize 1024 -validity 3650 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "deepglint_store_pwd123" -keypass "deepglint_key_pwd123" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"
许可证lisence校验和代码混淆的实现原理

 

生成了私钥文件 privateKeys.keystore

利用jdk keytool工具导出证书文件

keytool -exportcert -alias "秘钥别名" -keystore "秘钥库名称.keystore" -storepass "秘钥库口令" -file "证书名称.cer"
eg: 
keytool -exportcert -alias "privateKey" -keystore "privateKeys.keystore" -storepass "deepglint_store_pwd123" -file "certfile.cer"
许可证lisence校验和代码混淆的实现原理

 

生成证书

利用jdk keytool工具将证书文件导入到证书库中

keytool -import -alias "别名" -file "证书名称.cer" -keystore "秘钥库名称.keystore" -storepass "秘钥库口令"
eg:
keytool -import -alias "publicCert" -file "certfile.cer" -keystore "publicCerts.keystore" -storepass "deepglint_store_pwd123"
许可证lisence校验和代码混淆的实现原理

 

将证书文件导入证书库

生成lisence

启动lisence-server服务

许可证lisence校验和代码混淆的实现原理

 

获取服务器信息

http://127.0.0.1:10000/license/getServerInfos
许可证lisence校验和代码混淆的实现原理

 

mac地址、IP地址、CPU序列号、主板序列号

生成证书

http://127.0.0.1:10000/license/generateLicense
许可证lisence校验和代码混淆的实现原理

 

安装lisence

配置证书和公钥文件

许可证lisence校验和代码混淆的实现原理

 

启动服务安装证书

许可证lisence校验和代码混淆的实现原理

 

安装的过程:读取证书中的服务器信息,然后读取真实的服务器信息,比对是否一致,并且验证是否在有效期内,若一致则安装成功,若不一致,则安装失败。

信息比对的过程在这里

许可证lisence校验和代码混淆的实现原理

 

lisence校验

证书安装成功之后,访问服务中的接口,浏览器访问http://127.0.0.1:10001//auth/api/1.0/getUserInfo

许可证lisence校验和代码混淆的实现原理

 

许可证lisence校验和代码混淆的实现原理

 

在拦截器中添加校验的逻辑,校验的逻辑和证书安装的时候校验过程是一样的。

许可证lisence校验和代码混淆的实现原理

 

通用的校验类LicenseVerify,其子类CustomLicenseManager中实现自定义的校验逻辑,比如服务器硬件信息校验,比如业务校验: 在线用户数校验

许可证lisence校验和代码混淆的实现原理

 

父类中封装了共有的校验逻辑,比如有效期校验

许可证lisence校验和代码混淆的实现原理

 

在拦截器中做校验即校验通过,才可访问其中的服务。

将上面2个服务部署到k8s中

编写server的镜像文件

许可证lisence校验和代码混淆的实现原理

 

把jar包和密钥证书加载进镜像

生成镜像

Docker build -t 127.0.0.1:5000/lic-auth/lic-auth-server:1.0

上传到景象仓库

docker push 127.0.0.1:5000/lic-auth/lic-auth-server:1.0

编写k8s pod文件

许可证lisence校验和代码混淆的实现原理

 

编写k8s svc文件

许可证lisence校验和代码混淆的实现原理

 

启动服务

kubectl Apply -f .

查看服务启动情况

许可证lisence校验和代码混淆的实现原理

 

许可证lisence校验和代码混淆的实现原理

 

查看证书文件

许可证lisence校验和代码混淆的实现原理

 

查看server服务的端口

许可证lisence校验和代码混淆的实现原理

 

生成证书

许可证lisence校验和代码混淆的实现原理

 

许可证lisence校验和代码混淆的实现原理

 

将生成好的证书复制到宿主机上

kubectl cp lic-auth-server-6dcd66c7d-vq5qb:license.lic -n xibaoxiao-chuangxin ./license.lic

将该证书文件放入待安装的服务中

许可证lisence校验和代码混淆的实现原理

 

将证书和公钥文件载入镜像

并指定访问路径

许可证lisence校验和代码混淆的实现原理

 

编译镜像

docker build -t 127.0.0.1:5000/lic-auth/lic-auth-client:1.0 .

pod yaml文件

许可证lisence校验和代码混淆的实现原理

 

svc yaml文件

许可证lisence校验和代码混淆的实现原理

 

启动服务

kubectl apply -f
许可证lisence校验和代码混淆的实现原理

 

证书安装成功

许可证lisence校验和代码混淆的实现原理

 

查看访问端口

许可证lisence校验和代码混淆的实现原理

 

http://127.0.0.1:30011//auth/api/1.0/getUserInfo
许可证lisence校验和代码混淆的实现原理

 

代码混淆

源码

https://gitee.com/roseboy/classfinal.git
生成该插件jar包放入本地仓库或私服中

`待混淆的项目的pom文件中引入该插件包

许可证lisence校验和代码混淆的实现原理

 

classfinal.version 使用刚刚打包定义的版本号
  • password 加密密码
  • packages 哪个package下面的代码做混淆
  • cfgfiles 哪个配置文件做混淆
  • debug 混淆的过程 debug模式 可以看到更多插件包中的日志信息
  • excludes 哪个package包下面的代码不做混淆
  • libjars jar/war lib目录下的哪些jar包不做混淆

打包结果之后,就可以看到混淆之后的jar包了

许可证lisence校验和代码混淆的实现原理

 

反编译之后 就可以看到 代码被混淆了

许可证lisence校验和代码混淆的实现原理

 

启动jar包

JAVA -javaagent:galaxy-bpm-service.jar='-pwd pingfanrenbiji'  galaxy-bpm-service.jar

当然也可以在镜像中启动,编写镜像文件

许可证lisence校验和代码混淆的实现原理

 

许可证lisence校验和代码混淆的实现原理

 



Tags:lisence   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
许可证lisence校验和代码混淆的实现原理
源码https://gitee.com/pingfanrenbiji/lic-auth利用jdk keytool工具制作证书利用jdk keytool工具生成证书keytool -genkeypair -keysize 1024 -validity 3650 -alias "秘钥...【详细内容】
2022-06-17  Search: lisence  点击:(321)  评论:(0)  加入收藏
▌简易百科推荐
Meta如何将缓存一致性提高到99.99999999%
介绍缓存是一种强大的技术,广泛应用于计算机系统的各个方面,从硬件缓存到操作系统、网络浏览器,尤其是后端开发。对于Meta这样的公司来说,缓存尤为重要,因为它有助于减少延迟、扩...【详细内容】
2024-04-15    dbaplus社群  Tags:Meta   点击:(3)  评论:(0)  加入收藏
SELECT COUNT(*) 会造成全表扫描?回去等通知吧
前言SELECT COUNT(*)会不会导致全表扫描引起慢查询呢?SELECT COUNT(*) FROM SomeTable网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小...【详细内容】
2024-04-11  dbaplus社群    Tags:SELECT   点击:(3)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  dbaplus社群    Tags:架构师   点击:(2)  评论:(0)  加入收藏
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(5)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(9)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(16)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(14)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(9)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(15)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(10)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条