前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重写AgileEAS.NET SOA 中间件平台账号密码的加密算法

重写AgileEAS.NET SOA 中间件平台账号密码的加密算法

作者头像
魏琼东
发布2018-07-31 16:42:55
3360
发布2018-07-31 16:42:55
举报
文章被收录于专栏:魏琼东魏琼东

一、平台简介

     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
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下载最新版本。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-07-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、平台简介
  • 二、账号加密、验证算法的替换
  • 三、实现和配置
  • 四、例子代码下载
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档