重写AgileEAS.NET SOA 中间件平台账号密码的加密算法
一、平臺簡介
???? 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接口,項目代碼結構如下:
???? 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人
郵件:james@agilelab.cn,mail.james@qq.com,
電話:18629261335。
?
我的博客即將搬運同步至騰訊云+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的重写AgileEAS.NET SOA 中间件平台账号密码的加密算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看Linux系统架构类型的5条常用命令
- 下一篇: asp.net ajax控件工具集 Au