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

1、平臺簡介

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

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

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

2、帳號加密、驗證算法的替換

      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方法用於對明文密碼和加密後的密碼進行比對。併發

3、實現和配置

    下面我就以某一個朋友的實現爲例,他想把密碼加密算法換成md5,我們來看看具體的作法。分佈式

     首先要建一個類庫項目,而且引用EAS.Explorer、EAS.MicroKernel、EAS.Explorer程序集,創建一個類並實現IPasswordProvider接口,項目代碼結構以下:ide

image

     MD5Password代碼以下:svn

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" />

     結束配置。

4、例子代碼下載

     本文涉及的領域模型設計器代碼插件例子,源代碼已經一併放在了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下載最新版本。

5、聯繫咱們

     爲了完善、改進和推廣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人

郵件:james@agilelab.cn,mail.james@qq.com,

電話:18629261335。

 

個人博客即將搬運同步至騰訊雲+社區,邀請你們一同入駐:https://cloud.tencent.com/developer/support-plan

相關文章
相關標籤/搜索