對稱加密、解密

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

/// /// 加密 /// public static class Encrypting { #region 使用對稱加密、解密 private static string GetEncryptKey() { return ConfigurationManager.AppSettin... ...


 /// <summary>
    /// 加密
    /// </summary>
    public static class Encrypting
    {
        #region 使用對稱加密、解密

        private static string GetEncryptKey()
        {
            return ConfigurationManager.AppSettings["EncryptKey"];
        }

        /// <summary>
        /// 使用對稱演算法加密
        /// </summary>
        /// <param name="str"></param>
        /// <param name="encryptKey"></param>
        /// <returns></returns>
        public static string SymmetricEncrypts(string str)
        {
            string result = string.Empty;
            byte[] inputData = System.Text.Encoding.UTF8.GetBytes(str);
            SymmetricAlgorithm Algorithm = null;
            MemoryStream msTarget = null;
            CryptoStream encStream = null;
            try
            {
                byte[] kv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
                //如需指定加密演算法,可在Create()參數中指定字元串
                //Create()方法中的參數可以是:DES、RC2 System、Rijndael、TripleDES 
                //採用不同的實現類對IV向量的要求不一樣(可以用GenerateIV()方法生成),無參數表示用Rijndael
                Algorithm = SymmetricAlgorithm.Create();//產生一種加密演算法
                msTarget = new MemoryStream();
                //定義將數據流鏈接到加密轉換的流。
                encStream = new CryptoStream(msTarget, Algorithm.CreateEncryptor(Convert.FromBase64String(GetEncryptKey()), kv), CryptoStreamMode.Write);
                encStream.Write(inputData, 0, inputData.Length);
                encStream.FlushFinalBlock();
                result = Convert.ToBase64String(msTarget.ToArray());
            }
            catch (Exception)
            {
                return null;
            }
            finally
            {
                if (Algorithm != null) Algorithm.Clear();
                if (msTarget != null) msTarget.Close();
                if (encStream != null) encStream.Close();
            }
            return result;
        }


        /// <summary>
        /// 使用對稱演算法解密
        /// </summary>
        /// <param name="encryptStr"></param>
        /// <param name="encryptKey"></param>
        /// <returns></returns>
        public static string SymmectricDecrypts(string encryptStr)
        {
            string result = string.Empty;
            SymmetricAlgorithm Algorithm = null;
            MemoryStream msTarget = null;
            CryptoStream decStream = null;
            //加密時使用的是Convert.ToBase64String(),解密時必須使用Convert.FromBase64String()
            try
            {
                byte[] kv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
                byte[] encryptData = Convert.FromBase64String(encryptStr);
                Algorithm = SymmetricAlgorithm.Create();
                msTarget = new MemoryStream();
                decStream = new CryptoStream(msTarget, Algorithm.CreateDecryptor(Convert.FromBase64String(GetEncryptKey()), kv), CryptoStreamMode.Write);
                decStream.Write(encryptData, 0, encryptData.Length);
                decStream.FlushFinalBlock();
                result = System.Text.Encoding.Default.GetString(msTarget.ToArray());
            }
            catch (Exception)
            {
                return null;
            }
            finally
            {
                if (Algorithm != null) Algorithm.Clear();
                if (msTarget != null) msTarget.Close();
                if (decStream != null) decStream.Close();
            }
            return result;
        }

        #endregion
    }

 


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

-Advertisement-
Play Games
更多相關文章
  • 一. 概念理解 你可能有留意到當你瀏覽網頁時,會有一些推送消息,大多數是你最近留意過的同類東西,比如你想買桌子,上淘寶搜了一下,結果連著幾天會有各種各樣的桌子的鏈接。這是因為 你瀏覽某個網頁的時候,WEB 伺服器會先送一些資料放在你的電腦上,類似於你打的文字,選的一些東西什麼的,Cookie 會幫 ...
  • 效果圖: 下載鏈接:創建wpf項目引用 如下:鏈接:http://pan.baidu.com/s/1chj1nS 密碼:u7y2 第一步:創建項目引用CefSharp 第二步:第二步將DLL拷貝到運行項目的Debug下 第三步:項目平臺設置32位 第四步:創建視頻文件與html腳本 第五步:Xaml ...
  • 本文為原創文章、源代碼為原創代碼,如轉載/複製,請在網頁/代碼處明顯位置標明原文名稱、作者及網址,謝謝! 本文使用的工具下載地址為: 或 dnSpy官方下載地址: 軟體界面如下: 該軟體分別64位版本及32位版本,分別為dnSpy.exe 及 dnSpy-x86.exe,調試時請註意調試所對應軟體版 ...
  • using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; namespace C... ...
  • 1.進程複習//通過進程去打開應用程式 Process.Start("calc"); Process.Start("mspaint"); Process.Start("notepad"); Process.Start("iexplore", "http://www.baidu.com"); //通過 ...
  • 1.Directory//File 文件 Path 路徑 FileStream StreamReader StreamWriter 流 Directory 文件夾 目錄 //創建文件夾 Directory.CreateDirectory(@"C:\a\b"); Console.WriteLine(" ...
  • using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; namespace Cons... ...
  • 1.MD5加密 用戶在資料庫存密碼需要進行再加密,這樣一個過程叫MD5加密只要涉及到存用戶的密碼一定要用MD5加密MD5密碼一般都是16進位的把一個密碼轉換成16進位的過程就叫MD5加密把字元串加密成MD5,這樣一個過程是不可逆的。只能把字元串變成MD5值,不能把MD5值變成字元串但有人模擬過MD5 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...