C#程序加密與解密Demo程序示例

目錄

一、加密程序功能介紹

1、加密用途

2、功能

3、程序說明

4、加密過程

5、授權的注冊文件保存方式

二、加密程序使用步驟

1、步驟一

?編輯2、步驟二

3、步驟三

4、步驟四

三、核心代碼說明

1、獲取電腦CPU 信息

2、獲取硬盤卷標號

3、機器碼生成

3、?生成注冊碼

四、工程說明

1、用戶軟件

2、后臺解密軟件

五、程序工程打包下載


一、加密程序功能介紹

1、加密用途

對軟件權限加密可適用于設備催付款,限制使用日期。

2、功能

一臺機器一個注冊碼,每個碼都不一樣。加密后客戶嘗試修改電腦時間或者更換電腦均無效。

3、程序說明

Demo程序示例分為兩部分,用戶程序部分加密程序、一個是后臺權限注冊解密程序。

4、加密過程

讀取電腦CPU編碼、讀取電腦硬盤編碼,設置限定日期,生成注冊碼。注冊碼經過MD5加密,寫入注冊表、寫入硬盤本地。(刪除或者修改注冊表中或者硬盤中的任何一個文件都將導致用戶軟件無法使用)

5、授權的注冊文件保存方式

授權的注冊碼經過MD5加密技術加密后分別存儲在注冊表和本地硬盤中,經過MD5加密后的數據無法進行逆向解密。

在授權使用時間天數范圍內,用戶不能修改該注冊碼或者刪除文件,否則導致授權損壞用戶軟件無法使用軟件。

二、加密程序使用步驟

1、步驟一

在用戶程序中,將機器碼復制拷貝到解密程序中,設置授權使用天數。

(如果是永久授權使用,則授權天數輸入36500即可)

2、步驟二

解密程序中生成注冊碼

3、步驟三

將解密程序中生成的注冊碼復制到用戶軟件中,進行注冊

4、步驟四

注冊后重新啟動用戶程序,軟件生效

三、核心代碼說明

1、獲取電腦CPU 信息

每個CPU信息出廠后都是獨立且唯一的

        /// <summary>/// 獲取電腦CPU信息的方法/// </summary>/// <returns></returns>public static string GetCpuId(){ManagementClass mc = new ManagementClass("Win32_Processor");ManagementObjectCollection moc = mc.GetInstances();string strCpuID = null;foreach (ManagementObject mo in moc){strCpuID = mo.Properties["ProcessorId"].Value.ToString();break;}return strCpuID;}

2、獲取硬盤卷標號

每個硬盤標號出廠后都是獨立且唯一的

         ///<summary>/// 獲取硬盤卷標號///</summary>///<returns></returns>public static string GetDiskVolumeSerialNumber(){ManagementClass mc = new ManagementClass("win32_NetworkAdapterConfiguration");ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");disk.Get();return disk.GetPropertyValue("VolumeSerialNumber").ToString();}

3、機器碼生成

根據CPU信息和硬盤標號,生成獨立唯一的機器碼。

機器碼使用MD5加密,

        ///<summary>/// 生成機器碼///</summary>///<returns></returns>public static  string GetMNum(){string strNum = DES.DESEncrypt((DateTime.Now.ToString("MMdd") + Form1.DiskID+Form1.CpuID), "12345678", "87654321");string strMNum = strNum.Substring(0, 24).ToUpper();    //截取前24位作為機器碼return strMNum;}

3、?生成注冊碼

注冊碼保存使用MD5加密,

        ///<summary>/// 生成注冊碼///</summary>///<returns></returns>public static string GetRNum(){SetIntCode();string strMNum = GetMNum();for (int i = 1; i < charCode.Length; i++)   //存儲機器碼{charCode[i] = Convert.ToChar(strMNum.Substring(i - 1, 1));}for (int j = 1; j < intNumber.Length; j++)  //改變ASCII碼值{intNumber[j] = Convert.ToInt32(charCode[j]) + intCode[Convert.ToInt32(charCode[j])];}string strAsciiName = "";   //注冊碼for (int k = 1; k < intNumber.Length; k++)  //生成注冊碼{if ((intNumber[k] >= 48 && intNumber[k] <= 57) || (intNumber[k] >= 65 && intNumber[k]<= 90) || (intNumber[k] >= 97 && intNumber[k] <= 122))  //判斷如果在0-9、A-Z、a-z之間{strAsciiName += Convert.ToChar(intNumber[k]).ToString();}else if (intNumber[k] > 122)  //判斷如果大于z{strAsciiName += Convert.ToChar(intNumber[k] - 10).ToString();}else{strAsciiName += Convert.ToChar(intNumber[k] - 9).ToString();}}return strAsciiName;}

四、工程說明

1、用戶軟件

軟件界面和封裝的類,各個功能全部都是源代碼,沒有使用DLL封裝

在開發用戶軟件過程,該界面功能作為子窗口集成到開發的軟件中即可。

2、后臺解密軟件

五、程序工程打包下載

下載連接

https://download.csdn.net/download/panjinliang066333/90464924

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71808.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71808.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71808.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

專題二串聯所有單詞的子串

1.題目 題目分析&#xff1a; 有一個字符串s和字符串數組&#xff0c;如何字符串數組里面的元素可以組成一個字符串&#xff0c;然后要在字符串里面找到連續子串跟組成的字符串一樣&#xff0c;返回起始地址。 2.算法原理 這道題可以把字符串數組的元素string看出char&#x…

scala類型檢測和轉換

在scala中關于類型的檢測的api一共有以下三個&#xff1a; &#xff08;1&#xff09;obj.isInstanceOf[T]&#xff1a;判斷 obj 是不是 T 類型。 &#xff08;2&#xff09;obj.asInstanceOf[T]&#xff1a;將 obj 強轉成 T 類型。 &#xff08;3&#xff09;classOf[T]&am…

【論文閱讀】VAD: Vectorized Scene Representation for Efficient Autonomous Driving

一、介紹 VAD是華科團隊設計的一個端到端無人駕駛框架&#xff0c;針對傳統的無人駕駛框架的模塊化設計的問題&#xff0c;該算法使用向量化的策略進行了端到端的實現。傳統的模塊化設計使得感知模塊完全依賴于感知模塊的計算結果&#xff0c;這一解耦實際上從規劃模塊的角度損…

探索Java多線程的核心概念與實踐技巧,帶你從入門到精通!

各位看官早安午安晚安呀 如果您覺得這篇文章對您有幫助的話 歡迎您一鍵三連&#xff0c;小編盡全力做到更好 歡迎您分享給更多人哦 今天我們來學習多線程編程-"掌握線程創建、管理與安全"&#xff1a; 上一節課程我們鋪墊了一系列的東西&#xff0c;引出來了我們的多…

互動多媒體項目 自行車互動

該項目為UE4 +自行車騎行速度 互動項目 結果預覽 : 1. 獲取自行車速度 這里使用的是Arduino單片機 + 霍爾傳感器 霍爾傳感器: 單片機完整代碼: #define HALL_PIN 2 // 霍爾傳感器連接到D2(中斷引腳) volatile unsigned long lastTime = 0; // …

STM32——GPIO介紹

GPIO(General-Purpose IO ports,通用輸入/輸出接口)模塊是STM32的外設接口的核心部分,用于感知外界信號(輸入模式)和控制外部設備(輸出模式),支持多種工作模式和配置選項。 1、GPIO 基本結構 STM32F407 的每個 GPIO 引腳均可獨立配置,主要特性包括: 9 組 GPIO 端口…

學習筆記:Python網絡編程初探之基本概念(一)

一、網絡目的 讓你設備上的數據和其他設備上進行共享&#xff0c;使用網絡能夠把多方鏈接在一起&#xff0c;然后可以進行數據傳遞。 網絡編程就是&#xff0c;讓在不同的電腦上的軟件能夠進行數據傳遞&#xff0c;即進程之間的通信。 二、IP地址的作用 用來標記唯一一臺電腦…

DeepSeek 醫療大模型微調實戰討論版(第一部分)

DeepSeek醫療大模型微調實戰指南第一部分 DeepSeek 作為一款具有獨特優勢的大模型,在醫療領域展現出了巨大的應用潛力。它采用了先進的混合專家架構(MoE),能夠根據輸入數據的特性選擇性激活部分專家,避免了不必要的計算,極大地提高了計算效率和模型精度 。這種架構使得 …

JetBrains學生申請

目錄 JetBrains學生免費授權申請 IDEA安裝與使用 第一個JAVA代碼 1.利用txt文件和cmd命令運行 2.使用IDEA新建項目 JetBrains學生免費授權申請 本教程采用學生校園郵箱申請&#xff0c;所以要先去自己的學校申請校園郵箱。 進入JetBrains官網 點擊立即申請&#xff0c;然…

LINUX網絡基礎 [五] - HTTP協議

目錄 HTTP協議 預備知識 認識 URL 認識 urlencode 和 urldecode HTTP協議格式 HTTP請求協議格式 HTTP響應協議格式 HTTP的方法 HTTP的狀態碼 ?編輯HTTP常見Header HTTP實現代碼 HttpServer.hpp HttpServer.cpp Socket.hpp log.hpp Makefile Web根目錄 H…

六十天前端強化訓練之第八天到第十四天——綜合案例:用戶管理系統

歡迎來到編程星辰海的博客講解 看完可以給一個免費的三連嗎&#xff0c;謝謝大佬&#xff01; 目錄 一、知識體系詳解 1. 變量與作用域 2. 箭頭函數特性 3. 數組高階函數 4. DOM操作原理 5. 事件傳播機制 6. 閉包核心原理 7. 原型繼承體系 8. Promise工作流程 二、綜…

技術周總結 03.03 - 03.09 周日(Java監控 SpringAI)

文章目錄 一、03.05 周三二、03.08 周六openAI 的Spring開發 一、03.05 周三 jvisualvm java自帶的監控和故障排除工具 命令行執行后&#xff0c;會出現 JConsole 二、03.08 周六 openAI 的Spring開發 引入 spring-ai-openai-spirng-boot-starter 依賴 Spring AI http…

DeepSeek:中國AGI破局者的技術革命與生態重構

在AI領域被"算力霸權"與"技術壟斷"籠罩的今天&#xff0c;一家來自杭州的初創公司正以顛覆性創新撕開行業鐵幕。DeepSeek&#xff08;深度求索&#xff09;不僅重新定義了AGI技術研發范式&#xff0c;更通過開源生態構建引發全球AI產業格局的深度重構。 一…

manus本地部署使用體驗

manus部署 https://github.com/mannaandpoem/OpenManus git clone https://github.com/mannaandpoem/OpenManus.git 或者手工下載zip包解壓&#xff0c;包很小&#xff0c;只有幾百K。 cd OpenManus-main #創建python環境&#xff0c;有python3的可以用python3 python -m ven…

【統計至簡】【入門測試1】給定數據矩陣X,如何求其質心、中心化數據、標準化數據、格拉姆矩陣、協方差矩陣、相關系數矩陣

給定數據矩陣X&#xff0c;如何求其質心、中心化數據、標準化數據、格拉姆矩陣、協方差矩陣、相關系數矩陣。 ??設數據矩陣 X X X是一個 n p n\times p np的矩陣&#xff0c;其中 n n n是樣本數量&#xff0c; p p p是變量數量&#xff0c; X ( x i j ) X (x_{ij}) X(xij?…

CI/CD—Jenkins、Maven安裝

Jenkins簡介 Jenkins 是一款廣泛使用的開源持續集成和持續交付&#xff08;CI/CD&#xff09;工具&#xff0c;以下是對它的詳細介紹&#xff1a; 基本信息 起源與發展&#xff1a;Jenkins 最早起源于 Hudson 項目&#xff0c;后來從 Hudson 項目中分離出來獨立發展。自 2011 …

抽獎系統測試報告

項目鏈接: 管理員登錄頁面 項目功能: 管理員登錄: 登錄方式分為兩種: 手機號密碼登錄: 正確輸入密碼和手機號登錄 短信驗證碼登錄: 輸入手機號,等待驗證碼,輸入驗證碼登錄 管理員注冊: 登錄頁面點擊注冊按鈕即可注冊管理員身份 人員管理模塊: 人員管理模塊分為注冊…

【高級篇】大疆Pocket 3加ENC編碼器實現無線RTMP轉HDMI進導播臺

【高級篇】大疆Pocket 3加ENC編碼器實現無線RTMP轉HDMI進導播臺 文章目錄 準備工作連接設備RTMP概念ENCSHV2推流地址設置大疆Pocket 3直播設置總結 老鐵們好&#xff01; 很久沒寫軟文了&#xff0c;今天給大家帶了一個干貨&#xff0c;如上圖&#xff0c;大疆Pocket 3加ENC編…

【 <一> 煉丹初探:JavaWeb 的起源與基礎】之 Servlet 與 JSP 的協作:MVC 模式的雛形

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Servl…

【不是廣告】華為昇騰的一小步,Pytorch的一大步

華為昇騰的一小步&#xff0c;Pytorch的一大步 關鍵詞 首個、中國首個、全球第十、最高級別&#xff01;看看這些字眼&#xff0c;就知道事情不簡單&#xff01; 書接上文《Pytorch的一小步&#xff0c;昇騰芯片的一大步》 在2023年10月4日PyTorch 2.1版本的發布博客上&…