Example #1
0
        /// <summary>
        /// 得到sha系列加密信息
        /// </summary>
        /// <param name="formFile"></param>
        /// <param name="hashAlgorithm"></param>
        /// <param name="isUpper">是否转大写</param>
        /// <returns></returns>
        private static string GetSha(IFormFile formFile, HashAlgorithm hashAlgorithm, bool isUpper)
        {
            var stream = formFile.OpenReadStream();

            byte[] retval = hashAlgorithm.ComputeHash(stream);
            stream.Close();
            return(SecurityCommon.GetSha(retval, hashAlgorithm, isUpper));
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="account">账户名</param>
 /// <param name="password">密码</param>
 /// <param name="inviteAccountId">邀请者账号</param>
 /// <param name="appleId">应用id</param>
 /// <param name="referer">来源地址</param>
 public Users(string account, string password, string inviteAccountId = "", string appleId = "",
              string referer = "") : this()
 {
     this.Account   = account;
     this.SecretKey = Math.Abs($"{this.Id}_{RegisterTime.GetTimeSpan(DateTimeKind.Utc)}".GetHashCode())
                      .ToString();
     this.Password    = SecurityCommon.Sha256($"{password}_{SecretKey}");
     this.Name        = "匿名账户" + DateTime.Now.GetTimeSpan();
     this.UserSources = new UserSources(inviteAccountId, appleId, referer);
     this.AddDomainEvent(new RegisterUserEvent(this.Account, this.Id, inviteAccountId, appleId, referer));
 }
Example #3
0
        /// <summary>
        /// 根据本地文件地址得到文件的Sha256
        /// </summary>
        /// <param name="localFilePath">文件绝对地址</param>
        /// <returns></returns>
        public static string GetSha256(string localFilePath)
        {
            if (!File.Exists(localFilePath))
            {
                return("");
            }

            using (FileStream fileStream =
                       new FileStream(localFilePath, FileMode.Open, FileAccess.Read))
            {
                return(SecurityCommon.GetSha(fileStream, new SHA256CryptoServiceProvider()));
            }
        }
Example #4
0
        /// <summary>
        /// 根据本地文件地址得到文件md5
        /// </summary>
        /// <param name="localFilePath">文件绝对地址</param>
        /// <param name="isUpper">是否转大写,默认:true</param>
        /// <returns></returns>
        public static string GetMd5(string localFilePath, bool isUpper = true)
        {
            //检查文件是否存在,如果文件存在则进行计算,否则返回空值
            if (File.Exists(localFilePath))
            {
                using (FileStream fileStream =
                           new FileStream(localFilePath, FileMode.Open, FileAccess.Read))
                {
                    return(SecurityCommon.GetMd5Hash(fileStream, isUpper));
                }
            }

            return(String.Empty);
        }
        /// <summary>
        /// 验证微信签名
        /// </summary>
        private static bool CheckSignature(string token, string signature, string timestamp, string nonce)
        {
            string[] arrTmp = { token, timestamp, nonce };

            Array.Sort(arrTmp);
            string tmpStr = string.Join("", arrTmp);

            tmpStr = SecurityCommon.Sha1(tmpStr);
            tmpStr = tmpStr.ToLower();
            if (tmpStr == signature)
            {
                return(true);
            }

            return(false);
        }
        /// <summary>
        /// 得到sha系列加密信息
        /// </summary>
        /// <param name="formFile"></param>
        /// <param name="hashAlgorithm"></param>
        /// <returns></returns>
        private static string GetSha(IFormFile formFile, HashAlgorithm hashAlgorithm)
        {
            var stream = formFile.OpenReadStream();

            byte[] retval = hashAlgorithm.ComputeHash(stream);
            stream.Close();
            return(SecurityCommon.GetSha(retval, hashAlgorithm));

            StringBuilder sc = new StringBuilder();

            for (int i = 0; i < retval.Length; i++)
            {
                sc.Append(retval[i].ToString("X2"));
            }

            return(sc.ToString());
        }
Example #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tickCacheKey"></param>
        /// <param name="tokenCacheKey"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public JsSdkConfig GetConfig(string tickCacheKey, string tokenCacheKey, string url)
        {
            string ticket = GetJsApiTicket(tickCacheKey, tokenCacheKey);

            string nonceStr = Guid.NewGuid().ToString().Replace("-", "");

            long timestamp = DateTime.Now.ToUnixTimestamp(TimestampType.Second);

            JsSdkConfig config = new JsSdkConfig()
            {
                AppId     = _config.AppId,
                TimeStamp = timestamp,
                NonceStr  = nonceStr
            };

            string valueTeam = "jsapi_ticket=" + ticket + "&noncestr=" + nonceStr + "&timestamp=" + timestamp +
                               "&url=" + url;

            config.Signature = SecurityCommon.Sha1(valueTeam).ToLower();

            return(config);
        }
Example #8
0
        /// <summary>
        /// 根据账户密码得到用户信息
        /// </summary>
        /// <param name="request"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override async Task <GetUserReply> GetAccount(GetUserRequest request,
                                                             ServerCallContext context)
        {
            var user = await _userQuery.GetQueryable().FirstOrDefaultAsync(x => x.Account == request.Account);

            if (user == null)
            {
                throw new BusinessException <string>("用户不存在", ErrCode.NoFind.Code);
            }

            if (user.Password != SecurityCommon.Sha256($"{request.Password}_{user.SecretKey}"))
            {
                throw new BusinessException <string>("账户密码错误", ErrCode.Error.Code);
            }

            return(await Task.FromResult(new GetUserReply()
            {
                Id = user.Id,
                Account = user.Account,
                Avatar = user.Avatar ?? "",
                Name = user.Name,
                Registertime = user.RegisterTime.FormatDate(FormatDateType.One)
            }));
        }
Example #9
0
 /// <summary>
 /// HMacSha384
 /// </summary>
 /// <param name="stream">待加密字符串</param>
 /// <param name="key">盐</param>
 /// <param name="encoding">编码格式,默认UTF-8</param>
 /// <returns></returns>
 public static string HMacSha384(this Stream stream, string key, Encoding encoding = null)
 {
     encoding = encoding ?? new UTF8Encoding();
     return(SecurityCommon.HMacSha384(stream, key, encoding));
 }
Example #10
0
 /// <summary>
 /// HMacSha384
 /// </summary>
 /// <param name="bytes"></param>
 /// <param name="key">盐</param>
 /// <param name="encoding">编码格式,默认UTF-8</param>
 /// <returns></returns>
 public static string HMacSha384(this byte[] bytes, string key, Encoding encoding = null)
 {
     encoding = encoding ?? new UTF8Encoding();
     return(SecurityCommon.HMacSha384(bytes, key, encoding));
 }
Example #11
0
 /// <summary>
 /// HMacSha256
 /// </summary>
 /// <param name="str">待加密字符串</param>
 /// <param name="key">盐</param>
 /// <param name="encoding">编码格式,默认UTF-8</param>
 /// <returns></returns>
 public static string HMacSha256(this string str, string key, Encoding encoding = null)
 {
     encoding = encoding ?? new UTF8Encoding();
     return(SecurityCommon.HMacSha256(str, key, encoding));
 }
Example #12
0
 /// <summary>
 /// Sha512加密
 /// </summary>
 /// <param name="bytes"></param>
 /// <param name="isUpper">是否转大写</param>
 /// <returns></returns>
 public static string Sha512(this byte[] bytes, bool isUpper = true)
 {
     return(SecurityCommon.Sha512(bytes, isUpper));
 }
Example #13
0
 /// <summary>
 /// Sha512加密
 /// </summary>
 /// <param name="stream"></param>
 /// <param name="isUpper">是否转大写</param>
 /// <returns></returns>
 public static string Sha512(this Stream stream, bool isUpper = true)
 {
     return(SecurityCommon.Sha512(stream, isUpper));
 }
Example #14
0
 /// <summary>
 /// Sha384
 /// </summary>
 /// <param name="str"></param>
 /// <param name="isUpper">是否转大写</param>
 /// <returns></returns>
 public static string Sha384(this string str, bool isUpper = true)
 {
     return(SecurityCommon.Sha384(str, isUpper));
 }
Example #15
0
 /// <summary>
 /// HMacSha512
 /// </summary>
 /// <param name="bytes"></param>
 /// <param name="key">盐</param>
 /// <param name="encoding">编码格式,默认UTF-8</param>
 /// <returns></returns>
 public static string HMacSha512(this byte[] bytes, string key, Encoding encoding = null)
 {
     return(SecurityCommon.HMacSha512(bytes, key, encoding));
 }
Example #16
0
 /// <summary>
 /// HMacSha512
 /// </summary>
 /// <param name="stream"></param>
 /// <param name="key">盐</param>
 /// <param name="encoding">编码格式,默认UTF-8</param>
 /// <returns></returns>
 public static string HMacSha512(this Stream stream, string key, Encoding encoding = null)
 {
     return(SecurityCommon.HMacSha512(stream, key, encoding));
 }
Example #17
0
 /// <summary>
 /// MD5加密(32位)
 /// </summary>
 /// <param name="str">待加密字符串</param>
 /// <param name="encoding">编码方式</param>
 /// <param name="isUpper">是否转大写</param>
 /// <returns></returns>
 public static string GetMd5Hash(this string str, Encoding encoding = null, bool isUpper = true)
 {
     return(SecurityCommon.GetMd5Hash(str, encoding, isUpper));
 }