最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#根據(jù)時間加密和防止反編譯的兩種方案

 更新時間:2026年01月12日 09:02:59   作者:工業(yè)程序猿老趙  
文章介紹了兩種C#時間加密方法(時間戳+AES加密和時間校驗加密)以及防反編譯步驟(代碼混淆和加殼保護),并強調(diào)了時間加密使用UTC時間和混淆與加殼的重要性,需要的朋友可以參考下

時間加密 = 用當(dāng)前時間做密鑰 / 校驗,防反編譯 = 混淆 + 加殼,配套用)

一、C# 時間加密 2 種核心實現(xiàn)(直接用)

都是可直接運行的完整代碼,適合做注冊驗證、臨時授權(quán)

方案 1:時間戳 + AES 加密(最常用,可逆)

核心:用當(dāng)前時間戳做密鑰因子,加密字符串,解密時校驗時間有效性

using System;
using System.Security.Cryptography;
using System.Text;
 
public class TimeAesEncrypt
{
    // 時間加密核心:時間戳+固定密鑰混合做密鑰
    private static string GetKeyByTime()
    {
        // 取當(dāng)前時間戳(精確到分鐘,防止秒級變動解密失?。?
        long timestamp = DateTime.Now.ToUniversalTime().Ticks / 10000000 / 60;
        return MD5.HashData(Encoding.UTF8.GetBytes("固定密鑰" + timestamp)).ToHexString().Substring(0, 16);
    }
 
    // 加密(帶時間因子)
    public static string Encrypt(string content)
    {
        using Aes aes = Aes.Create();
        aes.Key = Encoding.UTF8.GetBytes(GetKeyByTime());
        aes.IV = Encoding.UTF8.GetBytes("1234567812345678");//固定IV(可改)
        ICryptoTransform encryptor = aes.CreateEncryptor();
        byte[] bytes = Encoding.UTF8.GetBytes(content);
        return Convert.ToBase64String(encryptor.TransformFinalBlock(bytes, 0, bytes.Length));
    }
 
    // 解密(5分鐘內(nèi)有效,超時失效)
    public static string Decrypt(string cipherText)
    {
        // 校驗5分鐘內(nèi)的時間戳,兼容時間誤差
        for (int i = 0; i <= 5; i++)
        {
            try
            {
                long timestamp = (DateTime.Now.ToUniversalTime().Ticks / 10000000 / 60) - i;
                string key = MD5.HashData(Encoding.UTF8.GetBytes("固定密鑰" + timestamp)).ToHexString().Substring(0, 16);
                using Aes aes = Aes.Create();
                aes.Key = Encoding.UTF8.GetBytes(key);
                aes.IV = Encoding.UTF8.GetBytes("1234567812345678");
                ICryptoTransform decryptor = aes.CreateDecryptor();
                byte[] bytes = Convert.FromBase64String(cipherText);
                return Encoding.UTF8.GetString(decryptor.TransformFinalBlock(bytes, 0, bytes.Length));
            }
            catch { continue; }
        }
        throw new Exception("加密超時或內(nèi)容無效");
    }
}

方案 2:時間校驗加密(不可逆,適合授權(quán)驗證)

核心:加密內(nèi)容綁定有效期,解密時先驗時間,再驗內(nèi)容,防篡改

// 授權(quán)碼生成:比如生成7天有效期的授權(quán)碼
public static string CreateTimeAuthCode(string userId)
{
    DateTime expireTime = DateTime.Now.AddDays(7);
    string content = $"{userId}_{expireTime:yyyyMMddHHmmss}";
    // 加鹽MD5(不可逆,驗證時重新計算比對)
    return MD5.HashData(Encoding.UTF8.GetBytes(content + "加鹽字符串")).ToHexString();
}
 
// 驗證授權(quán)碼有效性
public static bool VerifyTimeAuthCode(string userId, string authCode)
{
    string content = $"{userId}_{DateTime.Now:yyyyMMddHHmmss}";
    string checkCode = MD5.HashData(Encoding.UTF8.GetBytes(content + "加鹽字符串")).ToHexString();
    if (checkCode == authCode) return true;
    // 補全有效期內(nèi)校驗邏輯(略)
    return false;
}

二、C# 防反編譯(2 個關(guān)鍵步驟,必做)

C# 程序(.exe/.dll)默認極易被反編譯(dnSpy 直接看源碼),2 步搞定防反編譯,工業(yè)級實用

步驟 1:代碼混淆(基礎(chǔ)防反編譯,必加)

推薦 2 個工具,不用寫代碼,直接處理文件? 免費工具:ConfuserEx(開源,夠用)

  1. 下載 ConfuserEx,添加你的 C# 程序集(.exe/.dll)
  2. 混淆規(guī)則選:anti debug+anti tamper+rename+obfuscate
  3. 點擊 Protect,生成混淆后的程序(反編譯后是亂碼,看不了邏輯)

商用工具:SmartAssembly(更強,防 dnSpy)直接勾選:字符串加密 + 控制流混淆 + 資源加密,一鍵生成,適合生產(chǎn)環(huán)境

步驟 2:加殼保護(進階,防脫殼,工業(yè)級)

混淆后再加殼,雙重防護,防止被脫混淆推薦工具:

  1. Themida:對 C# 程序加殼,防內(nèi)存 dump、防調(diào)試,效果最好
  2. 免費替代:Enigma Virtual Box(基礎(chǔ)加殼,防簡單脫殼)

三、關(guān)鍵注意事項(避坑)

  1. 時間加密別直接用本地時間!用 UTC 時間(DateTime.Now.ToUniversalTime ()),防止用戶改系統(tǒng)時間繞過
  2. 防反編譯必做 2 點:混淆(改亂代碼)+ 加殼(防脫),缺一不可
  3. 生產(chǎn)環(huán)境:AES 密鑰別寫死代碼里,可放配置文件加密存儲,或從硬件信息讀取

到此這篇關(guān)于C#根據(jù)時間加密和防止反編譯的兩種方案的文章就介紹到這了,更多相關(guān)C#根據(jù)時間加密和防反編譯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何隨機選取一個機器的ip

    如何隨機選取一個機器的ip

    此方法可用于當(dāng)需要負載均衡時,即想選擇多臺機器來處理程序執(zhí)行。 隨機的選擇一臺機器來處理。
    2013-03-03
  • 利用C#實現(xiàn)分布式數(shù)據(jù)庫查詢

    利用C#實現(xiàn)分布式數(shù)據(jù)庫查詢

    利用C#實現(xiàn)分布式數(shù)據(jù)庫查詢...
    2007-03-03
  • 基于WPF實現(xiàn)帶蒙版的MessageBox消息提示框

    基于WPF實現(xiàn)帶蒙版的MessageBox消息提示框

    這篇文章主要介紹了如何利用WPF實現(xiàn)帶蒙版的MessageBox消息提示框,文中的示例代碼講解詳細,對我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-08-08
  • C#的四種基本數(shù)據(jù)類型

    C#的四種基本數(shù)據(jù)類型

    本文主要介紹了C#的四種基本數(shù)據(jù)類型的相關(guān)知識,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • C#實現(xiàn)一個簡單實用的TXT文本操作及日志框架詳解

    C#實現(xiàn)一個簡單實用的TXT文本操作及日志框架詳解

    這篇文章主要給大家介紹了關(guān)于利用C#如何實現(xiàn)一個簡單實用的TXT文本操作及日志框架的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們一起來看看吧
    2018-07-07
  • Unity如何獲取Texture內(nèi)存大小方法詳解

    Unity如何獲取Texture內(nèi)存大小方法詳解

    這篇文章主要為大家介紹了Unity如何獲取Texture內(nèi)存大小方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • C#集合之并發(fā)集合的用法

    C#集合之并發(fā)集合的用法

    這篇文章介紹了C#集合之并發(fā)集合的用法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#雙緩沖技術(shù)實例詳解

    C#雙緩沖技術(shù)實例詳解

    這篇文章主要介紹了C#雙緩沖技術(shù),結(jié)合實例形式較為詳細的分析了C#雙緩沖的功能,實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下
    2016-02-02
  • 一起詳細聊聊C#中的Visitor模式

    一起詳細聊聊C#中的Visitor模式

    Visitor模式表示一個作用于某對象結(jié)構(gòu)中的各元素的操作,下面這篇文章主要給大家介紹了關(guān)于C#中Visitor模式的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • 利用WPF實現(xiàn)系統(tǒng)資源監(jiān)控的完整代碼

    利用WPF實現(xiàn)系統(tǒng)資源監(jiān)控的完整代碼

    在現(xiàn)代軟件開發(fā)中,系統(tǒng)資源監(jiān)控是系統(tǒng)管理、性能分析和故障診斷的重要工具,WPF是構(gòu)建現(xiàn)代化、美觀實用的系統(tǒng)監(jiān)控應(yīng)用的理想選擇,本文將詳細介紹如何使用WPF創(chuàng)建一個功能全面的系統(tǒng)資源監(jiān)控儀表盤,需要的朋友可以參考下
    2026-01-01

最新評論

乌恰县| 栾城县| 定边县| 襄垣县| 林甸县| 娄底市| 社会| 闽清县| 上栗县| 神木县| 宁武县| 资溪县| 陆丰市| 青海省| 临武县| 祥云县| 武陟县| 莱阳市| 体育| 松桃| 托克托县| 衡水市| 建平县| 永嘉县| 南溪县| 武穴市| 高邮市| 周宁县| 神池县| 留坝县| 广州市| 兰坪| 峨眉山市| 澜沧| 杭州市| 公安县| 繁峙县| 阿巴嘎旗| 察雅县| 洪泽县| 岚皋县|