/// <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)); }
/// <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())); } }
/// <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()); }
/// <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 + "×tamp=" + timestamp + "&url=" + url; config.Signature = SecurityCommon.Sha1(valueTeam).ToLower(); return(config); }
/// <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) })); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }