天天看點

重寫AgileEAS.NET SOA 中間件平台賬号密碼的加密算法

一、平台簡介

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

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

重寫AgileEAS.NET 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接口,項目代碼結構如下:

重寫AgileEAS.NET SOA 中間件平台賬号密碼的加密算法

     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.agileeas.net

官方部落格:http://eastjade.cnblogs.com

github:https://github.com/agilelab/eas

QQ:47920381

AgileEAS.NET QQ群:

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

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

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

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

電話:18629261335。

我的部落格即将搬運同步至騰訊雲+社群,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan

作者:魏瓊東

出處:http://www.cnblogs.com/eastjade

關于作者:有13年的軟體從業經曆,專注于中小軟體企業軟體開發過程研究,通過在技術與管理幫助中小軟體企業實作技術層面開源節流的目的。熟悉需求分析、企業架構、項目管理。現主要從事基于AgileEAS.NET平台的技術咨詢工作,主要服務于醫療衛生、鐵路、電信、物流、物聯網、制造、零售等行業。如有問題或建議,請多多賜教!

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,如有問題,可以通過[email protected] 聯系我,也可以加入QQ群:113723486、199463175、116773358、116773358、212867943、147168308、59827496、193486983、15118502和大家共同讨論,非常感謝。

繼續閱讀