精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

讓盜版無處可逃!SpringBoot 實現智能許可證驗證全攻略!

開發 前端
本文將帶你構建一個基于 Spring Boot + RSA2048 非對稱加密的許可證控制系統,支持硬件綁定、功能權限校驗與離線驗證。?整體方案安全、輕量、易擴展,可無縫嵌入現有的 Spring Boot 系統中。

在軟件產品走向商業化的過程中,許可證驗證系統(License System)就像一道智能防線,既是企業的利潤保障線,也是合規與風控的重要工具。 無論是企業級 ERP 系統、桌面工具,還是在線 SaaS 服務,都離不開對授權、時間、功能和設備的嚴格管理。

一個完善的許可證控制系統,通常具備以下四大價值:

  • 保護知識產權:防止軟件被復制或盜用。
  • 支撐商業模式:實現按功能或時間授權。
  • 精準用戶管控:明確授權對象與使用范圍。
  • 滿足合規要求:方便企業做軟件資產審計。

本文將帶你構建一個基于 Spring Boot + RSA2048 非對稱加密的許可證控制系統,支持硬件綁定、功能權限校驗與離線驗證。 整體方案安全、輕量、易擴展,可無縫嵌入現有的 Spring Boot 系統中。

系統設計思路

許可證機制的核心是非對稱加密體系。 廠商使用私鑰生成許可證簽名,客戶端使用公鑰驗證真偽。 這種設計的三大優勢是:

  • 高安全性:私鑰只由廠商持有,公鑰公開無風險;
  • 部署簡單:支持完全離線驗證,無需獨立 License 服務器;
  • 擴展性強:可靈活加入多種驗證維度(硬件、功能、時間等)。

系統架構如下:

/com/icoderoad/license
├── controller       # REST接口層
├── service          # 核心業務邏輯(簽發、驗證)
├── util             # 硬件信息 & RSA 工具類
└── model            # License 數據模型

技術選型

模塊

技術棧

功能說明

后端框架

Spring Boot 3.x

核心業務支撐

數據序列化

Jackson

JSON 序列化與反序列化

安全組件

Java Security API

提供 RSA 簽名算法

加密算法

RSA2048 / SHA256withRSA / Base64

數字簽名、驗證

前端

Vue + Element + TailwindCSS

授權管理后臺

通訊協議

RESTful API

標準化前后端交互

核心模塊實現

硬件指紋采集工具類(HardwareUtil)

硬件指紋是許可證防偽的關鍵一環。 下面的工具類可跨平臺獲取主板序列號,并自動適配 Windows / Linux 環境:

package com.icoderoad.license.util;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.io.*;
import java.nio.charset.StandardCharsets;


@Component
public class HardwareUtil {
    private static final Logger logger = LoggerFactory.getLogger(HardwareUtil.class);


    /** 獲取主板序列號,支持 Windows 與 Linux */
    public String getMotherboardSerial() {
        String os = System.getProperty("os.name").toLowerCase();
        try {
            if (os.contains("windows")) return getWindowsSerial();
            else if (os.contains("linux")) return getLinuxSerial();
            else {
                logger.warn("不支持的操作系統: {}", os);
                return "UNKNOWN";
            }
        } catch (Exception e) {
            logger.error("獲取主板序列號失敗", e);
            return "UNKNOWN";
        }
    }


    private String getWindowsSerial() throws Exception {
        Process process = Runtime.getRuntime().exec("wmic baseboard get serialnumber");
        try (BufferedReader reader = new BufferedReader(
                new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8))) {
            String line;
            while ((line = reader.readLine()) != null) {
                if (!line.trim().isEmpty() && !line.contains("SerialNumber")) {
                    return line.trim();
                }
            }
        }
        process.waitFor();
        return "UNKNOWN";
    }


    private String getLinuxSerial() throws Exception {
        try {
            Process process = Runtime.getRuntime().exec("sudo dmidecode -s baseboard-serial-number");
            try (BufferedReader reader = new BufferedReader(
                    new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8))) {
                String line = reader.readLine();
                if (line != null && !line.trim().isEmpty() && !line.contains("Not Specified"))
                    return line.trim();
            }
        } catch (Exception e) {
            logger.warn("dmidecode 執行失敗,嘗試讀取 sys 文件", e);
        }
        return readFromSys();
    }


    private String readFromSys() {
        try {
            Process process = Runtime.getRuntime().exec("cat /sys/class/dmi/id/board_serial");
            try (BufferedReader reader = new BufferedReader(
                    new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8))) {
                String line = reader.readLine();
                if (line != null && !line.isEmpty()) return line.trim();
            }
        } catch (Exception e) {
            logger.warn("讀取 /sys 文件失敗", e);
        }
        return "UNKNOWN";
    }
}

設計亮點:

  • 支持多操作系統兼容;
  • 異常兜底機制,保證系統穩定;
  • 日志精細記錄,方便排查;
  • 全程 UTF-8 編碼,避免亂碼。

RSA 工具類(RSAUtil)

提供密鑰生成、數字簽名與驗簽的完整工具集:

package com.icoderoad.license.util;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.security.*;
import java.security.spec.*;
import java.util.Base64;


@Component
public class RSAUtil {
    private static final Logger logger = LoggerFactory.getLogger(RSAUtil.class);
    private static final String ALGO = "RSA";
    private static final String SIGN_ALGO = "SHA256withRSA";


    /** 生成密鑰對 */
    public KeyPair generateKeyPair() throws Exception {
        KeyPairGenerator gen = KeyPairGenerator.getInstance(ALGO);
        gen.initialize(2048);
        KeyPair keyPair = gen.generateKeyPair();
        logger.info("RSA 密鑰對生成成功");
        return keyPair;
    }


    /** 簽名 */
    public String sign(String data, PrivateKey privateKey) throws Exception {
        Signature sig = Signature.getInstance(SIGN_ALGO);
        sig.initSign(privateKey);
        sig.update(data.getBytes());
        return Base64.getEncoder().encodeToString(sig.sign());
    }


    /** 驗簽 */
    public boolean verify(String data, String signBase64, PublicKey publicKey) throws Exception {
        Signature sig = Signature.getInstance(SIGN_ALGO);
        sig.initVerify(publicKey);
        sig.update(data.getBytes());
        return sig.verify(Base64.getDecoder().decode(signBase64));
    }
}

License 模型定義

package com.icoderoad.license.model;


import com.fasterxml.jackson.annotation.*;
import java.time.LocalDate;
import java.util.List;


@JsonPropertyOrder({"subject","issuedTo","hardwareId","expireAt","features"})
public class License {
    private String subject;
    private String issuedTo;
    private String hardwareId;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate expireAt;
    private List<String> features;
    private String signature;


    // getter / setter / toString 省略
}

核心業務服務:LicenseService

該類負責許可證的簽發與驗證全流程。

package com.icoderoad.license.model;


import com.fasterxml.jackson.annotation.*;
import java.time.LocalDate;
import java.util.List;


@JsonPropertyOrder({"subject","issuedTo","hardwareId","expireAt","features"})
public class License {
    private String subject;
    private String issuedTo;
    private String hardwareId;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate expireAt;
    private List<String> features;
    private String signature;


    // getter / setter / toString 省略
}

REST 接口層

package com.icoderoad.license.controller;


import com.icoderoad.license.model.License;
import com.icoderoad.license.service.LicenseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.security.*;
import java.util.*;


@RestController
@RequestMapping("/api/license")
public class LicenseController {
    @Autowired private LicenseService licenseService;


    private KeyPair cachedKeyPair;


    @PostMapping("/generate-keys")
    public Map<String, Object> generateKeys() throws Exception {
        cachedKeyPair = KeyPairGenerator.getInstance("RSA").generateKeyPair();
        Map<String, Object> res = new HashMap<>();
        res.put("publicKey", Base64.getEncoder().encodeToString(cachedKeyPair.getPublic().getEncoded()));
        res.put("privateKey", Base64.getEncoder().encodeToString(cachedKeyPair.getPrivate().getEncoded()));
        return res;
    }


    @PostMapping("/generate")
    public String generateLicense(@RequestBody License license) throws Exception {
        return licenseService.generateLicense(license, cachedKeyPair.getPrivate());
    }


    @PostMapping("/verify")
    public String verifyLicense(@RequestBody String licenseJson) throws Exception {
        boolean result = licenseService.verifyLicense(licenseJson, cachedKeyPair.getPublic());
        return result ? "驗證通過" : "驗證失敗";
    }
}

系統安全機制總結

校驗維度

說明

數字簽名驗證

保證許可證未被篡改

硬件指紋綁定

限定授權設備

到期時間檢測

防止過期使用

JSON 標準化

確保簽名內容一致性

結語:從“授權管理”到“商業壁壘”

通過本方案,你不僅能在 Spring Boot 項目中輕松實現本地化許可證驗證, 還可以構建出一套可擴展的商業授權閉環系統。

未來可繼續擴展:

  • 支持云端授權同步(License Server)
  • 增加功能級授權粒度(模塊化 License)
  • 結合加密狗、序列號、用戶賬號體系實現多重防護

當你的軟件開始被復制、破解時,這套系統將成為它最強的“守護盾”—— 讓盜版無處可逃,讓你的商業價值安全可控。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2021-03-15 18:55:53

大數據網購短視頻

2011-03-07 17:09:58

2011-03-07 16:53:44

2012-07-17 11:32:55

IT電源數據網絡交付

2012-05-04 13:55:59

移動應用新聞應用

2020-06-30 14:15:56

軟件開發編程

2021-01-18 11:23:21

AIAI+醫療醫學影響

2022-06-06 15:53:44

日志智能

2009-03-24 12:34:24

2025-02-14 11:04:07

JavaScript開發函數

2011-05-04 16:25:28

黑盒

2017-12-14 21:55:45

人臉識別智能監控水滴風波

2025-07-14 07:07:22

Spring多場景抽獎

2025-11-07 02:00:00

2013-04-15 10:48:16

Xcode ARC詳解iOS ARC使用

2013-06-08 11:13:00

Android開發XML解析

2024-05-07 09:01:21

Queue 模塊Python線程安全隊列

2010-04-23 14:04:23

Oracle日期操作

2009-10-19 15:20:01

家庭綜合布線

2009-12-14 14:32:38

動態路由配置
點贊
收藏

51CTO技術棧公眾號

欧美va天堂| 免费电影日韩网站| 成人免费视频caoporn| 国内久久久精品| 特级西西www444人体聚色| 开心久久婷婷综合中文字幕| 亚洲免费在线观看视频| 国产在线一区二区三区播放| 青青青国产在线| 日韩精品一区二区三区免费观看| 日韩欧美专区在线| 欧美一区二区中文字幕| av资源种子在线观看| 国产成人无遮挡在线视频| 7777精品久久久久久| 午夜国产福利视频| 麻豆成人入口| 欧美人与禽zozo性伦| 欧美综合在线播放| 超鹏97在线| 久久久久久9999| 成人动漫在线观看视频| 在线观看亚洲黄色| 影音先锋久久久| 日韩中文字幕精品视频| 国产精品一区二区人妻喷水| 国产精品无码久久久久| 欧美日韩色婷婷| 亚洲成人动漫在线| 福利片在线看| 久久影院午夜论| 国产精品免费一区二区三区| 一级特黄aa大片| 久久精品日韩欧美| 久久琪琪电影院| 在线日韩国产网站| 久久99免费视频| 亚洲成人久久久| 国产999免费视频| 欧美日韩视频免费看| 欧美午夜激情视频| 男女私大尺度视频| 91中文在线| 国产精品毛片大码女人| 麻豆传媒一区二区| 色婷婷av一区二区三| 国产精品一级片| 国产精品亚洲аv天堂网| 在线视频一区二区三区四区| 亚洲免费精品| 久久久久久久久久久免费| 99久久99久久精品国产| 欧美成人激情| 爽爽爽爽爽爽爽成人免费观看| 一区二区三区免费在线观看视频| 99a精品视频在线观看| 欧美一区国产二区| 欧美午夜精品理论片| 国产69精品久久久久9999人| 欧美在线观看一二区| 欧美日韩怡红院| 欧美日韩成人影院| 在线一区二区三区做爰视频网站| 欧美国产亚洲一区| 免费h在线看| 色婷婷精品大视频在线蜜桃视频| 国产中文字幕免费观看| 在线成人av观看| 在线亚洲高清视频| 免费涩涩18网站入口| 99久久婷婷国产综合精品首页 | 性欧美大战久久久久久久免费观看| 懂色av成人一区二区三区| 丁香另类激情小说| 精品九九九九| 国内在线精品| 91亚洲永久精品| 精品国产综合久久| 高清av在线| 亚洲欧美激情视频在线观看一区二区三区| 亚洲一区二区三区在线观看视频| 黄色小网站在线观看| 亚洲精品成人精品456| 免费人成自慰网站| 不卡av播放| 精品视频一区三区九区| 中文字幕在线视频一区二区| 精品久久97| 亚洲区免费影片| 午夜激情福利电影| 在线成人黄色| 国产精品爱啪在线线免费观看 | 欧美电影精品一区二区| 亚洲av成人片色在线观看高潮| 九色精品91| 久久精品福利视频| 精品国产免费观看| 久久99热狠狠色一区二区| 高清av免费一区中文字幕| 青青草免费在线视频| 国产精品成人免费| 国内精品视频一区二区三区| 少妇精品视频一区二区免费看| 欧美精品精品一区| 野外性满足hd| 欧美高清不卡| 国产精品女视频| 人妻无码中文字幕| 国产精品久久久久久久久图文区 | av免费不卡国产观看| 在线观看一区不卡| 国产乱国产乱老熟300部视频| 色综合中文网| 久久91亚洲精品中文字幕| 无码人妻av免费一区二区三区| 精品夜夜嗨av一区二区三区| 免费av一区二区三区| 国产剧情在线| 91久久精品日日躁夜夜躁欧美| 绯色av蜜臀vs少妇| 青青草国产免费一区二区下载| 久久久久久91| 国产伦子伦对白视频| 国产日韩精品一区二区三区| www.亚洲成人网| 看片一区二区| 亚洲欧美综合另类中字| 日韩黄色三级视频| 国产精品1024久久| 中文字幕中文字幕99 | 韩日成人在线| 成人性生交xxxxx网站| 国产三级在线| 日韩欧美中文字幕在线播放| 亚洲欧美高清在线| 欧美激情视频一区二区三区在线播放| 国产精品第2页| 日韩精品视频无播放器在线看| 亚洲一区二区三区在线| 在线免费黄色小视频| 久久久久蜜桃| 国产一区香蕉久久| 日本在线视频站| 欧美日韩精品一区二区| 日本一道本视频| 秋霞电影网一区二区| 日韩精品av一区二区三区| 亚洲伊人av| 亚洲精品综合久久中文字幕| 91精品国产乱码在线观看| 国产精品18久久久久久vr| 日本精品免费视频| 精品中文字幕一区二区三区| 久久天天躁日日躁| 91国产免费视频| 亚洲欧洲国产日韩| 国产亚洲色婷婷久久| 一区二区在线| 国产精品播放| 色吧亚洲日本| 国产亚洲精品高潮| 在线观看一二三区| 国产精品初高中害羞小美女文| 五月天激情视频在线观看| 第一社区sis001原创亚洲| 国产在线精品一区免费香蕉| 日本在线看片免费人成视1000| 欧美日韩综合在线| 亚洲国产123| 国产成人精品免费看| 一卡二卡三卡视频| 少妇高潮一区二区三区| 国产精品69av| 1pondo在线播放免费| 日韩一区二区三区视频| 精品一级少妇久久久久久久| aaa亚洲精品一二三区| 国产第一页视频| 精品久久中文| 999国产在线| 三级中文字幕在线观看| 深夜成人在线观看| 亚洲国产精品国自产拍久久| 日韩欧中文字幕| 亚洲波多野结衣| 成人免费视频免费观看| 无码内射中文字幕岛国片| 99热国内精品| 国产精品久久久久久久久婷婷| 在线男人天堂| 日韩网站免费观看| 欧美一区二区公司| 欧美亚洲动漫精品| 久久老司机精品视频| 久久久91精品国产一区二区三区| 国产成人美女视频| 中文一区二区| 综合视频免费看| 日韩啪啪网站| 91日本视频在线| 午夜影院在线播放| 久久综合色88| 国产一二在线观看| 精品88久久久久88久久久| 这里只有精品国产| 午夜天堂影视香蕉久久| 国产传媒免费在线观看| 久久丝袜美腿综合| 绯色av蜜臀vs少妇| 久久国产精品无码网站| 91猫先生在线| 国内成人在线| 99热这里只有精品7| 九色精品国产蝌蚪| 国产尤物99| 国产精品一区二区三区四区在线观看 | 91亚洲精品一区| 日韩欧美一区二区三区在线观看| 欧美黑人巨大xxx极品| av电影在线观看网址| 亚洲国产91精品在线观看| 国产老女人乱淫免费| 在线观看免费视频综合| 日本一区二区欧美| 亚洲欧美偷拍另类a∨色屁股| 91网站免费入口| 不卡一区在线观看| 日韩精品国产一区| 国内精品在线播放| 污污动漫在线观看| 久久免费黄色| 欧美性大战久久久久xxx | 国产三级一区二区| av黄色一级片| 国产成人精品亚洲777人妖| 奇米视频7777| 捆绑变态av一区二区三区| 青青在线视频免费| 蘑菇福利视频一区播放| 国产精品裸体瑜伽视频| 日韩视频在线一区二区三区 | 翔田千里一区二区| 欧美激情 国产精品| 最新国产乱人伦偷精品免费网站| 亚洲天堂第一区| 在线成人直播| 青青草综合视频| 欧美国产91| 日韩一区二区高清视频| 欧美精品三区| 国产在线视频在线| 极品日韩av| 成年人网站免费视频| 99精品欧美| 2022亚洲天堂| 玖玖在线精品| 亚洲综合色在线观看| 国产真实乱对白精彩久久| 污污的视频免费观看| 韩国av一区二区三区| 老女人性生活视频| 成人黄色综合网站| 中文在线观看免费视频| 99re66热这里只有精品3直播| 亚洲综合自拍网| 久久久99精品免费观看| 在线免费看视频| 日韩一区有码在线| 久草免费在线视频观看| 亚洲成av人片观看| 黄色一级视频免费看| 欧美三级三级三级爽爽爽| 国产一区二区麻豆| 精品久久久三级丝袜| 天堂网www中文在线| 国产一区二区三区久久精品| 久久久久久国产精品免费无遮挡| 欧美日韩xxx| www.精品| 亚洲最大的av网站| 国产福利资源一区| 欧美午夜欧美| 68国产成人综合久久精品| 丰满的少妇愉情hd高清果冻传媒 | 国产不卡精品视男人的天堂| 成人免费一区| 超碰97在线资源| 精品中文一区| 国产精品视频一二三四区| 国产一区二区你懂的| 欧美日韩中文不卡| 丁香六月久久综合狠狠色| 亚洲黄色免费视频| 亚洲小说欧美激情另类| 五月婷婷丁香在线| 欧美r级电影在线观看| 黄网在线观看| 欧美激情2020午夜免费观看| 亚洲承认视频| av一区二区三区免费| 欧美男gay| 成年人深夜视频| 男女性色大片免费观看一区二区| 亚洲成人福利视频| 中文字幕中文字幕中文字幕亚洲无线 | 久久久久久久久久一区二区| 91在线视频免费观看| 一区二区国产精品精华液| 一本久久a久久免费精品不卡| 国产jzjzjz丝袜老师水多| 亚洲一区www| segui88久久综合9999| 91视频免费网站| 国产一区二区在线| 欧美三级在线观看视频| 国内精品伊人久久久久av一坑| 永久免费看mv网站入口78| 亚洲国产乱码最新视频| 国产一区二区三区成人| 一本色道久久综合狠狠躁篇的优点| 不卡av免费观看| 亚洲精品欧美一区二区三区| 国产一区二区三区四区五区| 黄色免费视频大全| 成人看片黄a免费看在线| 欧美爱爱免费视频| 欧美精品一卡二卡| 92国产在线视频| 国产精品久久久久久久久久| 亚洲第一福利社区| 色综合久久久久无码专区| 成人av动漫在线| 日本少妇性生活| 精品久久国产字幕高潮| 肉肉视频在线观看| 51国偷自产一区二区三区| 综合天堂久久久久久久| 天天做天天干天天操| 最新不卡av在线| 国产免费黄色片| 欧美成人在线免费| 日韩高清在线观看一区二区| 热这里只有精品| 韩国三级在线一区| 日韩精品一区二区亚洲av性色| 337p亚洲精品色噜噜噜| 黄网站免费在线播放| 91九色国产在线| 欧美日本在线| 女教师高潮黄又色视频| 亚洲一区二区三区在线| 免费av一级片| 91大神在线播放精品| 亚欧日韩另类中文欧美| www.xxx亚洲| 中文字幕中文字幕中文字幕亚洲无线 | 国产成人在线网址| 69久久99精品久久久久婷婷| 国内精品久久久久国产| 风间由美一区二区三区| 亚洲尤物精选| 日本美女xxx| 91精品国产福利在线观看 | 日韩三级视频| 丰满人妻中伦妇伦精品app| 91蜜桃传媒精品久久久一区二区| 91video| 亚洲性69xxxbbb| 久久九九精品视频| 国产高清不卡无码视频| 99久久99精品久久久久久| 亚洲第一在线播放| 丝袜美腿精品国产二区| 91精品一区| 凹凸国产熟女精品视频| 久久影院视频免费| 国产精品爽爽久久久久久| 欧美精品一区二区三区国产精品| 国产伦理久久久久久妇女| 玩弄中年熟妇正在播放| 激情综合网天天干| 国产成人愉拍精品久久| 国产小视频国产精品| 99综合久久| 欧洲精品在线播放| 国产欧美一区二区精品性色 | 欧美亚洲国产怡红院影院| 成年人黄视频在线观看| 99久久伊人精品影院| 玖玖精品视频| 美女的奶胸大爽爽大片| 国产视频在线观看一区二区| 国内自拍亚洲| 国产午夜伦鲁鲁| 中文成人综合网| 91黄色在线视频| 欧美孕妇性xx| 午夜国产一区二区| 黑人巨大精品欧美| 欧美男同性恋视频网站|