• .Net中Web增加加密狗管理


    由于业务中最近需要使用到加密狗,增加对Web代码的管控,所以需要进行加密狗使用的研究

    首先,对于没有接触使用过加密狗的人需要有个大致的认识,加密狗分为 MasterDog,

    1.下载加密狗的开发套件,这个一般购买加密狗厂商会提供 (safenetftp%5Csuperdog%5CSuperDog-R-2.3.1.56436.iso

      

     安装完成之后会在看到如上图的一个菜单项

    2.代码集成加密狗

       代码中集成加密狗,使用中将加密狗集成到了过滤器中,针对请求检查加密狗的状态,加密狗提供了.net的开发sdk,包含如下的dll

       

       a.自定义过滤器    

        public class dogFilter : FilterAttribute, IActionFilter
        {
    
            void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
            {
            }
            void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
            {
                if (filterContext.Controller.GetType() != typeof(ErrorController))
                {
                    if (!DogValidate.JudgeDog())
                        filterContext.Result = new RedirectResult("/Error/NoAuthorized?Message=对不起,未插入软件狗,无权限操作系统!");
                }
            }
        }

        b.注册过滤器

      

       c.DogValidata类的编码    

    public static class DogValidate
        {
            private static string m_vendorCodeString = "sRzyJecV/0ZD/lqK4JTnNTloxW9gCSVqCKUpibPV7nupz9d2XpFUPMQhAr9sZvGin+x06jdhKzIPbtCp4BkTsW+7Ukbu4xR1aU8TQ5is1tEIpkeoeQVtpZg7Sa3tfh9x6WKqRL7JcF8y9EP/zJbwNUhw2BpgFy0bGRe12koZncRwMsJow6bhQ2OeU1IXhGLwYFcuyncNDnSt9cKQKMzLLYm7/LbxkLwfEIOdXeHtiLaefnoFsrVgsYt631Qn6DeFkn9cOQKZyvqHNUZBrXjIlc/0cTdjDAhN3hZHpzFM0mBMkgaJs7hAgvfOiRfGi0GqnQ9cbdYMCktP9A2aIc0+NyGt3eCcejgiH57/hTQldU1DHAKhj6kizDSmvQMHISezzizXyEn2Sc+dblHPzBEzDybuQky44WnB/uHJmAfp5Wp0NFO6/hMIBfwOkhj3ZxG4hSn4lEuyVX9AmNRhJBbZMTUGjjvfXNFbzLHaPyxGt0Ya9l4M7T52H9ilw+OM6ZW77uWf+ufAEoiNxT4D0GsCDFDP7rxRhAFop7LXSPSuLadcDnrLXDjg+BiejczvTN0M4WQ/w7EqJVQo5kWAaTJeMrTPr8IkJ7xidHWskWnHPdXK6ZX8aIAC+8fQIxdyCltPppuiaHeGpcnxKrbo9/lhmmLQkIAlH+ND21h1SticidCKOfICrOeuOYYOBDvJJSUN2mqK6EyWUpp4z2FVzoKzkQnxCMOtaa4paA/Vaw8wAua/NIj19h7TT/I67tTwrYUkHdfIg8oyHEW/dfWs60ACxWixULSIVqlk3vPDTlJHttuSkUNucggJYxooSGGiyp3x8AEn6CjX0vmxiqYXwmPhlqkdqoh8ACdH3XoYMzNKo9fxkPardQZDJayMM9hxY5InwWYrL8hKY0l4fwJDnZR8nKdBNZAo6f+iVWWZK3mxYTKymVuUkvBEpHRhyuzSVWdEm6l9Q1frLZYBPrJX2j2ngw==";
            public static string m_defaultScope = "<?xml version="1.0" encoding="UTF-8" ?> " +
                                                 "<dogscope> " +
                                                 "   <license_manager hostname ="localhost" /> " +
                                                 "</dogscope>";
            public static bool JudgeDog(int num = 1)
            {
                try
                {
                    DogFeature feature = DogFeature.FromFeature(num);
                    Dog dog = new Dog(feature);
                    DogStatus status = dog.Login(m_vendorCodeString, m_defaultScope);
                    if (status != DogStatus.StatusOk)
                    {                   
                        if (status == DogStatus.FeatureNotFound)
                        {
                            return JudgeDog(0);
                        }
                        return false;
                    }
                }
                catch (Exception e)
                {
                    throw new Exception("狗驱动加载失败,请执行目录下的工具=》软件狗问题请执行我.exe");
                }
                return true;
            }
        }

     上诉的代码中 m_vendorCodeString,m_defaultScope 购买加密狗时,sdk会提供,主要是通过dog.Login来进行验证,这里又涉及到加密狗的特征问题,每个加密狗会有多个特征,这里的DogFeature.FromFeature根据特征ID获取不同的特征来验证,这里我在使用的过程中只设置了一个特征,就是有效期,例如设置系统有效期为一年,一年后将不能使用,下面看看加密狗该如何配置特征,来配合程序检测

    3.加密狗工具的使用,配置特征

       加密狗使用中,有SuperDog Master(母狗)SuperDog(子狗)的区分,母狗用来编程子狗,子狗随软件一起给客户部署插入use即可

       

       a.电脑上插入母狗以及子狗

       b.选择加密狗工具包

      

       b.选择授权管理工具

       

        

        点击添加许可特征

         

         

         上图配置的就是特征,包含特征ID,以及过程日期,这里需要配置允许远程桌面访问,否则远程连接会有问题,特征ID配合程序的 DogFeature.FromFeature(num);中num的值一致即可

          然后编程加密狗,将特征写入加密狗

          

          

          查看加密狗的状态,看编程的结果

          

          软件发行过程中,如果IIS的应用程序池需要设置为 允许32位程序运行

          

          

  • 相关阅读:
    Spring MVC Ajax 嵌套表单数据的提交
    Spring MVC 过滤静态资源访问
    Spring MVC 页面跳转时传递参数
    IDEA Maven 三层架构 2、运行 springMVC
    IDEA Maven 三层架构 1、基本的Archetype 搭建
    EasyUI DataGrid 基于 Ajax 自定义取值(loadData)
    Spring MVC Ajax 复杂参数的批量传递
    Mybatis Sql片段的应用
    在 Tomcat 8 部署多端口项目
    自动升级的设计思路与实现
  • 原文地址:https://www.cnblogs.com/tiaoshuidenong/p/6625281.html
Copyright © 2020-2023  润新知