LicenseGenerator注册机

发布时间 2023-06-14 07:51:04作者: 流浪的夜空

LicenseGenerator注册机

目标

基于交互式命令的注册机、加密、解密、签名

通用诉求

  1. 生成非对称公私钥
  2. 私钥签名
  3. 公钥验签

业务诉求

  • 基于公钥密码学的非对称加密算法,客户端存储公钥,管理员存储私钥,公钥分发到各个客户端,私钥管理员唯一存储;
  • 客户将唯一标识码提供给管理员,管理员将标识码和授权码,经过私钥签名,将密文发送给客户,客户完成验签

实现

  1. 基于cpuid + mac address的唯一标识码
  2. 基于模块+到期时间的授权码
  3. 采用Picocli实现交互式命令
  4. Generate生成公私钥
  5. Sign签名(加密)
  6. Verify验签(解密)
  7. Checksum摘要
# Windows获取CPUID:
wmic cpu get ProcessorId
# 返回样例
ProcessorId
178BFBFF00870F10
# Windows获取MAC Address
ipconfig /all
# 返回样例
以太网适配器 以太网 3:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Sangfor aTrust VNIC
   物理地址. . . . . . . . . . . . . : 00-FF-82-C8-CB-99
# 授权码样例
[20230301171336714][20230301171336714]FuelCell|VehicleDriving|

原理

采用RSA非对称加密算法生成私钥对机器ID和授权表进行加密

实现

  1. 生成RSA证书
  2. 公钥拷贝给客户端
  3. 私钥存放在注册机中
  4. 编写授权表
  5. 生成CPUID和MACAddress
  6. 采用注册机生成注册码
  7. 注册码拷贝到客户端校验

使用方法

# 生成公私钥(默认已经具备,根目录pub.cert,pri.cert)
generate
# 签名(生成密钥)
sign 178BFBFF00870F10|00FF82C8CB99,Compiler$20240301171336
# 校验(解密)
verify pwrzd6GF2sp7kl4GJyVcBDiSD8sRVL5/pGE+WFfzkleABR3YFjQyukaLZsf180LOvYWfPmncLgGqedmRPq+6q+bV2Vf1IhLzSu4ud7JflsW7rtbYMXOO/reArBJAfQQEiDgqWdvMl/t0IQiQiNWTD4cHvUrGgiU3eB6x/pIa9l5d47snVf4nACDNd+g1M515tpPe9C6inrjUpUMwic2oCgSPSLXL2GnJS+mSfVFJIX1b29fPRCIhq+Rl2jOzL5bWv8ucXE5cY3GGN0KRHs0Q1NKGhChcKRVQ7fPjbbjNHFO8rG0fnY2a8ny0vOVobdkWsegCvkoP+8vPrTkWTKVkSg==

TODOLIST

  1. 暂无