C# DES加密解密

来源:http://www.cnblogs.com/sanday/archive/2017/11/21/7873665.html
-Advertisement-
Play Games

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; namespace C... ...


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;

namespace ConsoleApp1
{
    public class EncryptUtil
    {
        /// <summary>
        /// MD5加密碼字元串
        /// </summary>
        /// <param name="sInputString">消息體</param>
        /// <returns>MD5簽名字元</returns>
        public static string MD5Encrypt(string sInputString)
        {
            System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
            string encoded = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(sInputString))).Replace("-", "");
            return encoded;
        }

        /// <summary>
        /// DES加密
        /// </summary>
        /// <param name="sInputString">加密後的消息體</param>
        /// <param name="sKey">24位的密鑰</param>
        /// <returns>解密後的消息體</returns>
        public static string DESEncryptBase64(string sInputString, string sKey)
        {
            if (string.IsNullOrEmpty(sInputString) || string.IsNullOrEmpty(sKey) || sKey.Length != 24)
            {
                return string.Empty;
            }

            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            des.Mode = CipherMode.ECB;
            des.Padding = PaddingMode.PKCS7;
            string key = sKey.Substring(0, 12);
            string iv = sKey.Remove(0, 12);
            byte[] byKey = Convert.FromBase64String(key);
            byte[] byIV = Convert.FromBase64String(iv);
            byte[] inputByteArray = Encoding.UTF8.GetBytes(sInputString);

            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();

            return Convert.ToBase64String(ms.ToArray());
        }

        /// <summary>
        /// DES解密
        /// </summary>
        /// <param name="sInputString">待加密消息體</param>
        /// <param name="sKey">24位的密鑰</param>
        /// <returns>加密後的消息體</returns>
        public static string DESDecryptBase64(string sInputString, string sKey)
        {
            if (string.IsNullOrEmpty(sInputString) || string.IsNullOrEmpty(sKey) || sKey.Length != 24)
            {
                return string.Empty;
            }

            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            des.Mode = CipherMode.ECB;
            des.Padding = PaddingMode.PKCS7;

            string key = sKey.Substring(0, 12);
            string iv = sKey.Remove(0, 12);
            byte[] byKey = Convert.FromBase64String(key);
            byte[] byIV = Convert.FromBase64String(iv);
            byte[] inputByteArray = Convert.FromBase64String(sInputString);

            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, byIV), CryptoStreamMode.Write);

            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();

            Encoding encoding = new UTF8Encoding();
            return encoding.GetString(ms.ToArray());
        }

    }

}

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在上一章中,詳細介紹了 ASP.NET Core 中的授權策略,在需要授權時,只需要在對應的Controler或者Action上面打上 特性,並指定要執行的策略名稱即可,但是,授權策略是怎麼執行的呢?懷著一顆好奇的心,忍不住來探索一下它的執行流程。 目錄 1. "MVC中的授權" "Authoriz ...
  • static bool CheckPowerOfTwo(ulong num) { return num > 0 && (num & (num - 1)) == 0; } ...
  • 引自https://www.cnblogs.com/lsgsanxiao/p/5523282.html invoke和begininvoke 區別 一直對invoke和begininvoke的使用和概念比較混亂,這兩天看了些資料,對這兩個的用法和原理有了些新的認識和理解。 首先說下,invoke和b ...
  • 如何:對 Windows 窗體控制項進行線程安全調用 訪問 Windows 窗體控制項本質上不是線程安全的。 如果有兩個或多個線程操作某一控制項的狀態,則可能會迫使該控制項進入一種不一致的狀態。 還可能會出現其他與線程相關的 Bug,例如爭用情況和死鎖。 確保以線程安全方式訪問控制項非常重要。 在未使用 In ...
  • 一 前言 對於正則表達式,相信很多人都知道,但是很多人的第一感覺就是難學,因為看第一眼時,覺得完全沒有規律可尋,而且全是一堆各種各樣的特殊符號,完全不知所云。 其實只是對正則不瞭解而以,瞭解了你就會發現,原來就這樣啊正則所用的相關字元其實不多,也不難記,更不難懂,唯一難的就是組合起來之後,可讀性比較 ...
  • 一. 概念理解 你可能有留意到當你瀏覽網頁時,會有一些推送消息,大多數是你最近留意過的同類東西,比如你想買桌子,上淘寶搜了一下,結果連著幾天會有各種各樣的桌子的鏈接。這是因為 你瀏覽某個網頁的時候,WEB 伺服器會先送一些資料放在你的電腦上,類似於你打的文字,選的一些東西什麼的,Cookie 會幫 ...
  • 效果圖: 下載鏈接:創建wpf項目引用 如下:鏈接:http://pan.baidu.com/s/1chj1nS 密碼:u7y2 第一步:創建項目引用CefSharp 第二步:第二步將DLL拷貝到運行項目的Debug下 第三步:項目平臺設置32位 第四步:創建視頻文件與html腳本 第五步:Xaml ...
  • 本文為原創文章、源代碼為原創代碼,如轉載/複製,請在網頁/代碼處明顯位置標明原文名稱、作者及網址,謝謝! 本文使用的工具下載地址為: 或 dnSpy官方下載地址: 軟體界面如下: 該軟體分別64位版本及32位版本,分別為dnSpy.exe 及 dnSpy-x86.exe,調試時請註意調試所對應軟體版 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...