重寫AgileEAS.NET SOA 中間件平臺賬號密碼的加密演算法

来源:http://www.cnblogs.com/eastjade/archive/2016/07/04/5640145.html
-Advertisement-
Play Games

一、平臺簡介 AgileEAS.NET SOA 中間件平臺是一款基於基於敏捷並行開發思想和Microsoft .Net構件(組件)開發技術而構建的一個快速開發應用平臺。用於幫助中小型軟體企業建立一條適合市場快速變化的開發團隊,以達到節省開發成本、縮短開發時間,快速適應市場變化的目的。 AgileEA ...


一、平臺簡介

     AgileEAS.NET SOA 中間件平臺是一款基於基於敏捷並行開發思想和Microsoft .Net構件(組件)開發技術而構建的一個快速開發應用平臺。用於幫助中小型軟體企業建立一條適合市場快速變化的開發團隊,以達到節省開發成本、縮短開發時間,快速適應市場變化的目的。

     AgileEAS.NET SOA中間件平臺提供了敏捷快速開發軟體工程的最佳實踐,通過提供大量的基礎支撐功能如IOC、ORM、SOA、分散式體系及敏捷併發開發方法所支撐的插件開發體系,以及提供了大量的實體、數據模型設計生成工具、代碼生成工具,用於幫助中小軟體開發商快速成長。

     AgileEAS.NET平臺充分把握目前軟體行業快速發展的新趨勢,基於敏捷並行開發、快速適應市場這樣淳樸的軟體工程實踐,採用業界廣泛使用的Microsoft .Net構件(組件)開發技術實踐了這種開發思想,幫助軟體企業實現“敏捷變化、快速適合”的目標,從而幫助軟體企業在激烈的市場競爭中贏得先機並獲得更高的回報。

二、賬號加密、驗證演算法的替換

      AgileEAS.NET SOA 中間件平臺一直使用內置的密碼加密演算法,隨著很多使用者提出,為了系統的安全需要,希望能提供一策略,用自己的加密演算法演算法替換AgileEAS.NET SOA 中間件平臺內置的密碼加密演算法。

     為了實現這種需求,我們定義了密碼提供者介面IPasswordProvider:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EAS.Explorer
{
    /// <summary>
    /// 用戶密碼提供者介面。
    /// </summary>
    public interface IPasswordProvider
    {
        /// <summary>
        /// 加密指定的密碼。
        /// </summary>
        /// <param name="password">要加密的密碼。</param>
        ///<returns>載入後的密碼。</returns>
        byte[] Encrypt(string password);

        /// <summary>
        /// 驗證給定的密碼是否和指定的密鑰匹配。
        /// </summary>
        /// <param name="password">要驗證的密碼。</param>
        /// <param name="key">要驗證的密鑰。密鑰的長度為64個位元組。</param>
        /// <returns>如果可以通過指定的密鑰生成和key相匹配的密鑰,則返回true;否則返回false。</returns>
        bool Verify(string password, byte[] key);
    }
}

     IPasswordProvider介面之中定義一個兩個方法,Encrypt方法用於生成密碼對應的加算後的密碼,Verify方法用於對明文密碼和加密後的密碼進行比對。

三、實現和配置

    下麵我就以某一個朋友的實現為例,他想把密碼加密演算法換成md5,咱們來看看具體的做法。

     首先要建一個類庫項目,並且引用EAS.Explorer、EAS.MicroKernel、EAS.Explorer程式集,建立一個類並實現IPasswordProvider介面,項目代碼結構如下:

image

     MD5Password代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using EAS.Explorer;
using System.Security.Cryptography;
using System.Text;
using System.IO;
using System.Text;

namespace My.Passwords
{
    public class MD5Password : IPasswordProvider
    {
        #region IPasswordProvider 成員

        public byte[] Encrypt(string password)
        {
            byte[] result = Encoding.Default.GetBytes(password.Trim());
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(result);
            byte[] buffer = new byte[64];
            Buffer.BlockCopy(output, 0, buffer, 0, 16);
            return buffer;
        }

        public bool Verify(string password, byte[] key)
        {
            byte[] result = Encoding.Default.GetBytes(password.Trim());
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(result);
            byte[] buffer = new byte[64];
            Buffer.BlockCopy(output, 0, buffer, 0, 16);
            return EAS.Security.Bytes.Equals(buffer, key);
        }

        #endregion
    }
}

     編譯代碼得到My.Passwords.dll,然後修改相關的配置文件,如EAS.SOA.Server.exe.config、Web.Config,加入如下配置:

<!--密碼演算法-->
      <object name="PasswordProvider" assembly="My.Passwords" type="My.Passwords.MD5Password" LifestyleType="Singleton" />

     結束配置。

四、例子代碼下載

     本文涉及的領域模型設計器代碼插件例子,源代碼已經一併放在了AgileEAS.NET SOA 中間件的最新版之中,請大請通過AgileEAS.NET SOA 中間件平臺官方網站下載,或者通過以下方式下載:

     直接下載:AgileEAS.NET SOA 5.2 下載http://112.74.66.105/downloads/eas/agileeas.net.5.rar

     SVN更新:https://112.74.66.105/svn/eas/5.0,登錄用戶:eas,密碼eas.

     AgileEAS.NET SOA 中間件平臺管理員:Administrator,登錄密碼sa

     直接下載的壓縮包可能會有一定的時間差,即有可能不一定是最新版本,建議大家都通過SVN下載最新版本。

五、聯繫我們

     為了完善、改進和推廣AgileEAS.NET而成立了敏捷軟體工程實驗室,是一家研究、推廣和發展新技術,並致力於提供具有自主知識產權的業務基礎平臺軟體,以及基於業務基礎平臺了開發的管理軟體的專業軟體提供商。主要業務是為客戶提供軟體企業研發管理解決方案、企業管理軟體開發,以及相關的技術支持,管理及技術咨詢與培訓業務。

     AgileEAS.NET平臺自2004年秋呱呱落地一來,我就一直在逐步完善和改進,也被應用於保險、醫療、電子商務、房地產、鐵路、教育等多個應用,但一直都是以我個人在推廣,2010年因為我辭職休息,我就想到把AgileEAS.NET推向市場,讓更多的人使用。

     技術團隊成員都是合作多年的老朋友,因為這個平臺是免費的,我們的營運開支主要靠為客戶提供咨詢服務所得,我們都是因為程式員的那種理想與信念堅持,在此我感謝一起奮鬥的朋友和一直支持我們工作的客戶、朋友。

團隊網站:http://www.agilelab.cn

AgileEAS.NET網站:http://www.smarteas.net

官方博客:http://eastjade.cnblogs.com

QQ:47920381

AgileEAS.NET QQ群:

113723486(AgileEAS SOA 平臺)/上限2000人

199463175(AgileEAS SOA 交流)/上限2000人

116773358(AgileEAS.NET SOA 平臺)/上限2000人

郵件:[email protected],[email protected],

電話:18629261335。


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

-Advertisement-
Play Games
更多相關文章
  • 一、通用標簽 1.s:property (讀取值棧中對象的屬性值) 屬性:value:指定OGNL表達式;default:OGNL表達式返回為 null 時,使用預設值;escape:是否對 HTML 特殊字元進行轉義 e1:讀取對象棧中對象的屬性值 e2:訪問Map棧,讀取Session域中對象的 ...
  • 代碼一大串! ...
  • 一.設計背景 現實生活中,我們要做一件事情或者完成某項工作,往往有很多種途徑。比如我們出游,可以選擇坐汽車,坐火車,土豪點的選擇是坐飛機。還有我們現線上下的支付方式也有了很多種選擇,以前在外面忘了帶錢的話可能一瓶水都難以買到,現在只要我們手機在身上,可以用微信或者支付寶。 在軟體設計層面,我們把各種 ...
  • 簡介 由於網路技術日趨成熟,黑客們也將註意力從以往對網路伺服器的攻擊逐步轉移到了對web應用的攻擊。據最新調查,信息安全有75%都發生在web應用而非網路層面。 場景 1. 控制訪問的許可權。只讓可以訪問的訪問到最小的資源和許可權。 2. 控制輸入內容。所有輸入都可能是不安全的,所以要過濾。 3. 保證 ...
  • 伏羲八卦、文王六十四卦、老子陰陽太極、西方哲學辯證與"解耦和復用”思想的異曲同工之妙 問題:任何程式語言在遇到複雜邏輯時,代碼維護難度就會加大,如何處理該問題? 答案:重構,模塊化。 重構、模塊化的最終趨向都是"解耦復用"。 問題:那麼如何理解"解耦復用"? 答案: 道可道,非常道;名可名,非常名。 ...
  • 場景 1. 過濾非正常用戶使用的http請求。 2. 限制正常用戶使用的範圍(下載速度、訪問頻率等)。 3. 通過架構規劃來提升安全。 4. 能自動解決http請求問題。 解決方案 代理自身的安全 1. 千萬不要使用root啟動!!! 2. 關閉伺服器的信息。 3. 關閉掉不使用的模塊。 過濾htt ...
  • 一、MyBatis入門簡要介紹(百科) MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將介面和 Java 的POJOs(Plain ...
  • 在工作過程中,我經常能和來自全球各地的首席信息安全官(chief information security officers ,CISO)交流,他們所在的企業面對著不同的信息安全環境,關心的安全問題也不盡相同。但總體上來說,他們在信息安全防護上的困擾集中在以下四個問題: 1、雲應用安全 如今,越來越 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...