zoukankan      html  css  js  c++  java
  • .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位程序运行

          

          

  • 相关阅读:
    抓取登录后的数据
    Form认证的几点说明
    eclipse启动错误:java.lang.NoClassDefFoundError: org/eclipse/core/resources/IContainer
    mysql游标的使用 No data
    mysql insert 主键 重复问题
    tail 命令
    maven 打包可执行jar的方法
    maven中如何打包源代码
    工程师,请优化你的代码
    在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)
  • 原文地址:https://www.cnblogs.com/tiaoshuidenong/p/6625281.html
Copyright © 2011-2022 走看看