public IHttpActionResult MailChangePassword(LoginData data) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var tmpResult = Service.EmailSend.CheckVerifyCode(data.Email, data.ValidateCode); if (tmpResult != 0) { switch (tmpResult) { case -1: return(BadRequest("请先发送验证码!")); case -2: return(BadRequest("请输入正确的验证码!")); case -3: return(BadRequest("请重新验证!")); } } var updatedCustomer = _db.Customers.FirstOrDefault(b => b.Email == data.Email); if (updatedCustomer != null) { updatedCustomer.Password = EncryptProvider.Md5(data.Password); _db.SaveChanges(); return(Ok("修改密码成功")); } else { return(NotFound()); } }
public IActionResult Unprotectdata([FromBody] Protected model) { var configurationBuilder = new ConfigurationBuilder(); var path = Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json"); configurationBuilder.AddJsonFile(path, false); var root = configurationBuilder.Build(); var desKey = root.GetSection("KEY").GetSection("SECkey").Value; try { model.Password = EncryptProvider.DESDecrypt(model.Password, desKey); var email = model.Email; string output = email.Replace(" ", "+"); model.Email = EncryptProvider.DESDecrypt(output, desKey.ToString()); if (model.Action == 10) //reset Password from email { model.Email = EncryptProvider.DESDecrypt(output, desKey); return(Ok(model)); } //model.Email = EncryptProvider.DESDecrypt(model.Email, desKey); //model.Password = EncryptProvider.DESDecrypt(model.Password, desKey); if (model.Action > 0 && model.Action != 5) { model.AbsenceId = EncryptProvider.DESDecrypt(model.AbsenceId, desKey); //when action = 5 then there is no JobId } return(Ok(model)); } catch (Exception ex) { return(BadRequest("Invalid")); } finally { } }
public async Task SignInSucceedAsync() { await _userRepository.DeleteAsync(it => it.UserEmail == "*****@*****.**"); await _userRepository.InsertAsync(new User() { UserEmail = "*****@*****.**", UserPassword = EncryptProvider.Sha256("testpassword"), UserNickname = "test" }); var signInPara = new UserService_SignInPara() { UserEmail = "*****@*****.**", UserPassword = "******" }; var result = await _userServiceController.SignInAsync(signInPara); var resultObj = result.Result as OkObjectResult; var resultVal = resultObj.Value as UserService_SignInDto; Assert.InRange((int)resultObj.StatusCode, 200, 299); Assert.True(resultVal.IsSuccess); _output.WriteLine(JsonSerializer.Serialize(resultVal, _options)); await _userRepository.DeleteAsync(it => it.UserEmail == "*****@*****.**"); }
/// <summary> /// Login /// </summary> /// <param name="username"></param> /// <param name="password"></param> /// <returns>Hàm trả về Tuper Item = AccountObject và Item 2: Danh sách Role</returns> public async Task <Tuple <AccountObject, List <string> > > Login(string username, string password) { var hashedPassword = EncryptProvider.Sha1(password); var accountObj = await _context.AccountObject.FirstOrDefaultAsync(c => c.UserName == username && c.PassWord == hashedPassword); if (accountObj == null) { return(null); } var roles = await _context.Role_AccountObject .Where(h => h.FK_AccountObject == accountObj.Id && h.AtRowStatus == (int)AtRowStatus.Normal ) .Select(h => h.FK_RoleNavigation.Id) .ToListAsync().ConfigureAwait(false); await WrtiteAudittingLog(new MSC_AudittingLog { Description = "Login " + accountObj.Id, UserID = accountObj.Id }, AtSerialNoConts.CODE_LOG_LOGIN); return(new Tuple <AccountObject, List <string> >(accountObj, roles)); }
async void SelectProfilePictureCommandExecuted() { await CrossMedia.Current.Initialize(); try { var selection = await _userDialogs.ActionSheetAsync("Profile Picture", "", null, null, "Take Photo", "Select from Gallery", "Clear"); _userDialogs.ShowLoading(); MediaFile file = null; if (selection.Equals("Take Photo")) { if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported) { _userDialogs.Toast("No camera available"); return; } file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions { SaveToAlbum = true, Directory = "Converse", PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium, MaxWidthHeight = 1024, CompressionQuality = 50 }); } else if (selection.Equals("Select from Gallery")) { if (!CrossMedia.Current.IsPickPhotoSupported) { _userDialogs.Toast("Not supported"); return; } file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions { PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium, MaxWidthHeight = 1024, CompressionQuality = 50 }); } else if (selection.Equals("Clear")) { Wallet.ProfileImageUrl = "baseline_person_grayish_48"; } if (file != null) { var stream = file.GetStream(); var storedImageUrl = await new FirebaseStorage("converse-8a53c.appspot.com") .Child("users") .Child(_walletManager.Wallet.Address) .Child("images") .Child(EncryptProvider.Md5(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt"), MD5Length.L16) + $".{file.Path.Split('.').Last()}") .PutAsync(stream); if (!string.IsNullOrWhiteSpace(storedImageUrl)) { Wallet.ProfileImageUrl = storedImageUrl; } } } catch (Exception ex) { _userDialogs.Toast("Image upload failed"); } _userDialogs.HideLoading(); }
/// <summary> /// sha256 加密 base64 编码 /// </summary> /// <param name="input"></param> /// <returns></returns> public static string Sha256Base64Encry(this string input) { byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(EncryptProvider.Sha256(input)); return(Convert.ToBase64String(byteArray)); }
private void Send_Click(object sender, EventArgs e) { //ini file var parser = new FileIniDataParser(); IniData data = parser.ReadFile("config.ini"); //var aesKey = EncryptProvider.CreateAesKey(); //var key = aesKey.Key; //var iv = aesKey.IV; //var plainTextPassword = ""; //var plainTextEmailFrom = ""; //var plainTextEmailTo = ""; //var ePass = EncryptProvider.AESEncrypt(plainTextPassword, key, iv); //var eEmailFrom = EncryptProvider.AESEncrypt(plainTextEmailFrom, key, iv); //var eEmailTo = EncryptProvider.AESEncrypt(plainTextEmailTo, key, iv); //data["Auth"]["tbp"] = ePass; //data["Auth"]["efr"] = eEmailFrom; //data["Auth"]["eto"] = eEmailTo; //data["Auth"]["k"] = key; //data["Auth"]["4"] = iv; //parser.WriteFile("config.ini", data); var aesKey = EncryptProvider.CreateAesKey(); var key = data["Auth"]["k"]; var iv = data["Auth"]["4"]; var encryptedP = data["Auth"]["tbp"]; var decryptedP = EncryptProvider.AESDecrypt(encryptedP, key, iv); var encryptedF = data["Auth"]["efr"]; var decryptedF = EncryptProvider.AESDecrypt(encryptedF, key, iv); var encryptedT = data["Auth"]["eto"]; var decryptedT = EncryptProvider.AESDecrypt(encryptedT, key, iv); var fromAddress = new MailAddress(decryptedF); var toAddress = new MailAddress(decryptedT); string fromPassword = decryptedP; string subject = "New Setup-" + hostname.Text; string body = "Make: " + make.Text + "\n" + "Model: " + model.Text + "\n" + "Serial: " + machineSerial.Text + "\n" + "Hardware ID: " + deviceID.Text + "\n" + "Security ID: " + SID.Text + "\n"; var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword), Timeout = 20000 }; using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body }) { smtp.Send(message); } }
/// <summary> /// 人脸更新 /// </summary> /// <returns></returns> public async Task<ActionResult> UpdateFace(FaceDatabaseModel.UserFaceModel model) { // 一系列检查 RequestFaceModel request = new RequestFaceModel() { Status = 500, Message = null, FaceList = null }; var userFaceSet = Verify(ref request, model); // 基本验证 if (userFaceSet == null) { return Ok(request); } // 判断是否存在此用户,是否存在此分组 // 判断是否有同样的人,判断是否有此分组 var group = await Service_user_face_storage_group.Get_storage_group_BySecretGroupAsync(model.secret_id, model.group_id); if (group == null) { request.Enum = RequestEnum.数据不存在; return Ok(request); } user_face_storage group_user = null; if (model.group_id == "@ALL") { group_user = await Service_user_face_storage.GetUser_By_UGS_ALL(model.user_id, model.secret_id); } else { group_user = await Service_user_face_storage.GetUser_By_UGS(model.user_id, group.id, model.secret_id); } if (group_user == null) { request.Enum = RequestEnum.数据不存在; return Ok(request); } // 将以前的人脸状态变为删除 user_face_storage user = new user_face_storage() { is_delete = true, updated_at = DateTime.Now, secret_id = model.secret_id }; // 增加一个人脸 #region 获取图片 var face_token = string.Empty; (Bitmap, string) bitmap = (null, null); // 获取图片文件 bitmap = model.image_type.ToUpper() == "BASE64" ? FileCommon.Base64ToBitmap(model.image) : FileCommon.UrlToBitmap(model.image); if (bitmap.Item1 == null && !string.IsNullOrEmpty(bitmap.Item2)) { if (model.image_type.ToUpper() == "BASE64") { request.Enum = RequestEnum.Base64图片格式错误; } else { request.Enum = RequestEnum.从图片的url下载图片失败; } return Ok(request); } #endregion #region 图片以及数据处理 // 查找是否有相同的图片 face_token = model.image_type.ToUpper() == "BASE64" ? EncryptProvider.Md5(model.image) : EncryptProvider.Md5(FileCommon.BitmapToBase64(bitmap.Item1)); // 查询 图片库 var user_images = await Service_user_face_image_data.Getuser_face_image_data_By_Token_Async(face_token); if (user_images != null) { bitmap.Item2 = user_images.url; } else { try { // 存入本地 bitmap.Item2 = FileCommon.SaveBitmap(bitmap.Item1, bitmap.Item2); } catch (Exception ex) { LogHelperNLog.Error(ex); request.Enum = RequestEnum.数据存储处理失败; return Ok(request); } } // 获取人脸数据 //var faceDate = FaceDetectionCompute.GetRectangle(bitmap.Item1); DlibDotNet.Rectangle[] faceDate = new DlibDotNet.Rectangle[0]; try { // 截取人像,面积排序 faceDate = FaceDetectionCompute.GetRectangle(bitmap.Item1).OrderByDescending(d => d.Area).Take(1).ToArray(); } catch (Exception ex) { LogHelperNLog.Error(ex, "FaceDetectionCompute.GetRectangles:人脸获取坐标出错"); request.Enum = RequestEnum.无法解析人脸; return Ok(request); } #endregion request.Enum = RequestEnum.Succeed; request.Location = faceDate; #region 日志&&扣费 try { DateTime dateTime = DateTime.Now; // 图片保存到数据库 user_images = new user_face_image_data() { token = face_token, url = bitmap.Item2, created_at = dateTime, updated_at = dateTime }; //查找分组信息 user.api_group_id = group.id; //用户信息 user_face_storage face_Storage = new user_face_storage() { user_id = userFaceSet.user_id, secret_id = model.secret_id, face_token = face_token, image = bitmap.Item2, image_type = model.image_type, api_group_id = group.id, api_user_id = model.user_id, api_user_info = model.user_info, quality_control = model.quality_control, liveness_control = model.quality_control, sign = model.sign, timestamp = model.timestamp, is_delete = false, api_respone = JsonConvert.SerializeObject(request, UnderlineSplitContractResolver.GetSettings()), created_at = dateTime, updated_at = dateTime }; using (var tra = SqlDapperHelper.GetOpenConnection().BeginTransaction()) { await Service_user_face_storage.Remove_Storage_By_ApiUserID(user, tra); if (user_images == null) { await Service_user_face_image_data.Creatuser_face_image_data(user_images, tra); } await SqlDapperHelper.ExecuteInsertAsync(face_Storage, tra); tra.Commit(); } } catch (Exception ex) { LogHelperNLog.Error(ex, "操作日志添加失败"); request.Enum = RequestEnum.操作日志添加失败; } #endregion return Ok(request); }
public AutenticacaoDoLogin FazerLogin(LoginDto loginDto) { bool credenciaisValidas = false; UsuarioDto usuarioBase = new UsuarioDto(); if (loginDto != null && !string.IsNullOrWhiteSpace(loginDto.Login)) { usuarioBase = _usuarioServices.GetByEmail(loginDto.Login); credenciaisValidas = usuarioBase.Id != Guid.Empty && !usuarioBase.Excluido && loginDto.Login == usuarioBase.Email && EncryptProvider.Md5(loginDto.Senha).ToUpper() == usuarioBase.Senha.ToUpper(); } if (credenciaisValidas) { var dataDeExpiracao = DateTime.Now.AddDays(1); var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_appSettings.Secret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, usuarioBase.Id.ToString()) }), Expires = dataDeExpiracao, SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var tokenObj = tokenHandler.CreateToken(tokenDescriptor); var token = tokenHandler.WriteToken(tokenObj); _context.SaveChanges(); return(new AutenticacaoDoLogin { Autenticado = true, DataDeCriacao = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), DataDeExpiracao = dataDeExpiracao.ToString("yyyy-MM-dd HH:mm:ss"), TokenDeAcesso = token, Mensagem = "OK", UsuarioId = usuarioBase.Id, Usuario = usuarioBase.Apelido, }); } else { return(new AutenticacaoDoLogin { Autenticado = false, Mensagem = "Falha ao autenticar" }); } }
public static string ToMd5(this string str) { return(EncryptProvider.Md5(str)); }
/// <summary> /// String SHA512 extensions /// </summary> /// <param name="srcString"></param> /// <returns></returns> public static string SHA512(this string srcString) { Check.Argument.IsNotEmpty(srcString, nameof(srcString)); return(EncryptProvider.Sha512(srcString)); }
/// <summary> /// String MD5 extension /// </summary> /// <param name="srcString"></param> /// <returns></returns> public static string MD5(this string srcString) { Check.Argument.IsNotEmpty(srcString, nameof(srcString)); return(EncryptProvider.Md5(srcString)); }
static void Main(string[] args) { var aesKey = EncryptProvider.CreateAesKey(); var key = aesKey.Key; var iv = aesKey.IV; /* * var _max = 10000; * * var s1 = Stopwatch.StartNew(); * * for (int i = 0; i < _max; i++) * { * aesKey = EncryptProvider.CreateAesKey(); * } * s1.Stop(); * * var s2 = Stopwatch.StartNew(); * for (int i = 0; i < _max; i++) * { * aesKey = EncryptProvider.CreateAesKey(false); * } * s2.Stop(); * * Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); * Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); * Console.Read(); */ var plaintext = "Hello world 123456789/*-+!@#$%^&*()-=_+"; var encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv); var decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv); Console.WriteLine("Plaintext to encrypt: " + plaintext); Console.WriteLine(); Console.WriteLine("** AES SecureRandom **"); Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted); Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted); Console.WriteLine("Key: {0} IV: {1}", key, iv); Console.WriteLine(); Console.WriteLine("** AES SecureRandom with Byte input/output **"); byte[] bencrypted = EncryptProvider.AESEncrypt(Encoding.UTF8.GetBytes(plaintext), key, iv); byte[] bdecrypted = EncryptProvider.AESDecrypt(bencrypted, key, iv); Console.WriteLine("Encrypted " + " (Length: " + bencrypted.Length + ") " + Encoding.UTF8.GetString(bencrypted)); Console.WriteLine("Decrypted " + " (Length: " + bdecrypted.Length + ") " + Encoding.UTF8.GetString(bdecrypted)); Console.WriteLine("Key: {0} IV: {1}", key, iv); Console.WriteLine(); Console.WriteLine("** AES Non-SecureRandom **"); aesKey = EncryptProvider.CreateAesKey(); key = aesKey.Key; iv = aesKey.IV; encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv); decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv); Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted); Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted); Console.WriteLine("Key: {0} IV: {1}", key, iv); Console.WriteLine(); Console.WriteLine("** RSA **"); var rsaKey = EncryptProvider.CreateRsaKey(); var publicKey = rsaKey.PublicKey; var privateKey = rsaKey.PrivateKey; //var exponent = rsaKey.Exponent; //var modulus = rsaKey.Modulus; encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext); encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext, RSAEncryptionPadding.Pkcs1); decrypted = EncryptProvider.RSADecrypt(privateKey, encrypted, RSAEncryptionPadding.Pkcs1); Console.WriteLine("Encrypted: " + encrypted); Console.WriteLine("Decrypted: " + decrypted); //Console.WriteLine("publicKey: {0} privateKey: {1}", publicKey, privateKey); Console.WriteLine(); Console.WriteLine("** SHA **"); Console.WriteLine("SHA1: " + EncryptProvider.Sha1(plaintext)); Console.WriteLine("SHA256: " + EncryptProvider.Sha256(plaintext)); Console.WriteLine("SHA384: " + EncryptProvider.Sha384(plaintext)); Console.WriteLine("SHA512: " + EncryptProvider.Sha512(plaintext)); Console.WriteLine(); Console.WriteLine("** Test issues #25 https://github.com/myloveCc/NETCore.Encrypt/issues/25 **"); rsaKey = EncryptProvider.CreateRsaKey(); publicKey = rsaKey.PublicKey; privateKey = rsaKey.PrivateKey; var testStr = "test issues #25 "; Console.WriteLine($"Test str:{testStr}"); var saveDir = AppDomain.CurrentDomain.BaseDirectory; //save public key var publicKeySavePath = Path.Combine(saveDir, "privateKey.txt"); if (File.Exists(publicKeySavePath)) { File.Delete(publicKeySavePath); } using (FileStream fs = new FileStream(publicKeySavePath, FileMode.CreateNew)) { fs.Write(Encoding.UTF8.GetBytes(privateKey)); } //save encrypt text var encryptStr = EncryptProvider.RSAEncrypt(publicKey, testStr, RSAEncryptionPadding.Pkcs1); Console.WriteLine($"encryped str:{encryptStr}"); var encryptSavePath = Path.Combine(saveDir, "encrypt.txt"); if (File.Exists(encryptSavePath)) { File.Delete(encryptSavePath); } using (FileStream fs = new FileStream(encryptSavePath, FileMode.CreateNew)) { fs.Write(Encoding.UTF8.GetBytes(encryptStr)); } Console.ReadKey(); }
public static string Decrypt(string value) { return(EncryptProvider.AESDecrypt(value, KEY, IV)); }
public IHttpActionResult UpdateUser(RegisterData data) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var tmpResult = Service.SellerEmailSend.CheckVerifyCode(data.SellerData.SellerEmail, data.ValidateCode); if (tmpResult != 0) { switch (tmpResult) { case -1: tmpResult = Service.SellerSmsSend.CheckVerifyCode(data.SellerData.SellerPhone, data.ValidateCode); if (tmpResult != 0) { switch (tmpResult) { case -1: return(BadRequest("请先点击发送验证码!")); case -2: return(BadRequest("验证码错误,请输入正确的验证码!")); case -3: return(BadRequest("请重新发送验证码!")); } } break; case -2: return(BadRequest("验证码错误,请输入正确的验证码!")); case -3: return(BadRequest("请重新发送验证码!")); } } // "Password": "******", // "ShopName": "interesting", // "CreditLevel": 10, // "ShopDescription": "mmp", // "AvatarPath": "mmp", // "DefaultSellerAddressIndex": 0, // "SellerEmail": "*****@*****.**", // "SellerPhone": "13761491703" Seller seller = new Seller() { Password = EncryptProvider.Md5(data.SellerData.Password), ShopName = data.SellerData.ShopName, CreditLevel = 5, ShopDescription = data.SellerData.ShopDescription, SellerEmail = data.SellerData.SellerEmail, SellerPhone = data.SellerData.SellerPhone, AvatarPath = "seller_avatar", DefaultSellerAddressIndex = 0 }; var inserted = db.Sellers.Add(seller); db.SaveChanges(); var cookie = new HttpCookie("sessionId") { Value = Service.CustomerSession.SetSessionId(inserted.SellerId).ToString(), Expires = DateTime.Now.AddHours(1) }; HttpContext.Current.Response.Cookies.Add(cookie); return(Ok()); }
public async Task <ActionResult> CheckLogin(string username, string password, string code) { LogEntity logEntity = new LogEntity(); logEntity.F_ModuleName = "系统登录"; logEntity.F_Type = DbLogType.Login.ToString(); try { if (NFine.Code.WebHelper.GetSession("nfine_session_verifycode").IsEmpty() || EncryptProvider.Md5(code.ToLower(), Code.Internal.MD5Length.L16) != NFine.Code.WebHelper.GetSession("nfine_session_verifycode").ToString()) { throw new Exception("验证码错误,请重新输入"); } UserEntity userEntity = userApp.CheckLogin(username, password); if (userEntity != null) { OperatorModel operatorModel = new OperatorModel(); operatorModel.UserId = userEntity.F_Id; operatorModel.UserCode = userEntity.F_Account; operatorModel.UserName = userEntity.F_RealName; operatorModel.CompanyId = userEntity.F_OrganizeId; operatorModel.DepartmentId = userEntity.F_DepartmentId; operatorModel.RoleId = userEntity.F_RoleId; operatorModel.LoginIPAddress = Net.Ip; operatorModel.LoginIPAddressName = Net.GetLocation(operatorModel.LoginIPAddress); operatorModel.LoginTime = DateTime.Now; operatorModel.LoginToken = EncryptProvider.DESEncrypt(Guid.NewGuid().ToString()); if (userEntity.F_Account == "admin") { operatorModel.IsSystem = true; } else { operatorModel.IsSystem = false; } await OperatorProvider.Provider.AddCurrent(operatorModel); logEntity.F_Account = userEntity.F_Account; logEntity.F_NickName = userEntity.F_RealName; logEntity.F_Result = true; logEntity.F_Description = "登录成功"; logEntity.F_CreatorUserId = operatorModel.UserId; logEntity.F_CreatorUserName = operatorModel.UserName; logApp.WriteDbLog(logEntity); } return(Content(new AjaxResult { state = ResultType.success.ToString(), message = "登录成功。" }.ToJson())); } catch (Exception ex) { logEntity.F_Account = username; logEntity.F_NickName = username; logEntity.F_Result = false; logEntity.F_Description = "登录失败," + ex.Message; logEntity.F_CreatorUserId = username; logEntity.F_CreatorUserName = username; logApp.WriteDbLog(logEntity); return(Content(new AjaxResult { state = ResultType.error.ToString(), message = ex.Message }.ToJson())); } }
/// <summary> /// 根据AccessToken获取新用户 /// </summary> /// <param name="accessToken"></param> /// <returns></returns> public virtual async Task <UserDTO> GetUserByAccessTokenAsync(string accessToken) { var login = new QQLogin(); var openId = login.GetOpenID(accessToken); var qqUserInfo = login.GetQQUserInfo(accessToken, openId); if (qqUserInfo.Ret != 0 || !string.IsNullOrWhiteSpace(qqUserInfo.Msg)) { return(null); } UserEntity user; var alreadyLoginUser = await GetQQUserInfoByOpenIdAsync(openId); //判断是否存在重复登陆且已经注册的用户 if (alreadyLoginUser == null) { var defaultPwd = EncryptProvider.Md5("123456");//默认使用MD5加密密码 user = new UserEntity() { createDate = DateTime.Now, portrait = qqUserInfo.Figureurl_qq_1, nickName = qqUserInfo.Nickname, loginTime = DateTime.Now, lastLoginDate = DateTime.Now, loginCount = 1, disabled = false, password = defaultPwd }; if (!await UserService.AddEntityAsync(user)) { return(null); } var entity = new QQUserInfoEntity() { openId = openId, accessToken = accessToken, userId = user.id, gender = qqUserInfo.Gender, figureurl_qq_1 = qqUserInfo.Figureurl_qq_1, nickName = qqUserInfo.Nickname }; if (await AddEntityAsync(entity)) { return(Mapper.Map <UserDTO>(user)); } } else { user = await UserService.GetUserByConditionAsync(a => a.id == alreadyLoginUser.userId && a.disabled == false); if (user == null) { throw new Exception("该用户被禁止登陆!"); } user.lastLoginDate = DateTime.Now; user.loginCount += 1; await UserService.UpdateEntityAsync(user); return(Mapper.Map <UserDTO>(user)); } return(null); }
/// <summary> /// String HMACSHA1 extensions /// </summary> /// <param name="srcString"></param> /// <returns></returns> public static string HMACSHA256(this string srcString, string key) { Check.Argument.IsNotEmpty(srcString, nameof(srcString)); return(EncryptProvider.HMACSHA256(srcString, key)); }
public void SubmitForm(UserEntity userEntity, UserLogOnEntity userLogOnEntity, string keyValue) { using (var db = this.repositoryBase.BeginTrans()) { if (!string.IsNullOrEmpty(keyValue)) { db.Update(userEntity); } else { userLogOnEntity.F_Id = userEntity.F_Id; userLogOnEntity.F_UserId = userEntity.F_Id; userLogOnEntity.F_UserSecretkey = EncryptProvider.CreateDesKey(); userLogOnEntity.F_UserPassword = EncryptProvider.Md5(EncryptProvider.DESEncrypt(EncryptProvider.Md5(userLogOnEntity.F_UserPassword, Code.Internal.MD5Length.L32).ToLower(), userLogOnEntity.F_UserSecretkey).ToLower(), Code.Internal.MD5Length.L32).ToLower(); db.Insert(userEntity); db.Insert(userLogOnEntity); } db.Commit(); } }
public async Task ProcessAsync(Message message, MailTemplateEnums mailTemplateEnums) { var data = DataProtectionProvider.Create("Subzz"); var protector = data.CreateProtector("secretAdmin@0192837465"); try { var configurationBuilder = new ConfigurationBuilder(); var path = Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json"); configurationBuilder.AddJsonFile(path, false); var root = configurationBuilder.Build(); string apiUrl = root.GetSection("URL").GetSection("api").Value; string web = root.GetSection("URL").GetSection("web").Value; //Private Key var desKey = root.GetSection("KEY").GetSection("SECkey").Value; // Encryption var encEmail = EncryptProvider.DESEncrypt(message.SendTo, desKey); var encPassword = EncryptProvider.DESEncrypt(message.Password, desKey); var encAbsenceId = EncryptProvider.DESEncrypt(message.AbsenceId.ToString(), desKey); message.ProfilePicUrl = apiUrl + "/Profile/" + message.Photo; message.UnsubscriptionUrl = web + "/unsubscribed/?email=" + message.SendTo; if (message.TemplateId == 14) { message.ApproveUrl = web + "/?pa=" + encPassword + "&email=" + encEmail + "&job=" + encAbsenceId + "&ac=" + 3; message.DenyUrl = web + "/?pa=" + encPassword + "&email=" + encEmail + "&job=" + encAbsenceId + "&ac=" + 4; } if (message.TemplateId == 1 || message.TemplateId == 7) { message.AcceptUrl = web + "/?pa=" + encPassword + "&email=" + encEmail + "&job=" + encAbsenceId + "&ac=" + 1; message.DeclineUrl = web + "/?pa=" + encPassword + "&email=" + encEmail + "&job=" + encAbsenceId + "&ac=" + 2; } if (message.TemplateId == 9) { message.resetPassUrl = web + "/resetPassword/?email=" + message.SendTo + "&key=" + message.ActivationCode; } if (message.TemplateId == 25) { //message.Password = EncryptProvider.DESEncrypt(message.Password, desKey); //var EmailId = EncryptProvider.DESEncrypt(message.SendTo, desKey); message.VerifyUrl = web + "/?pa=" + encPassword + "&email=" + encEmail + "&ac=" + 5; } MailTemplate mailTemplate = await CommunicationContainer.MailTemplatesBuilder .GetMailTemplateByIdAsync((int)mailTemplateEnums); string[] to; to = new string[] { message.SendTo }; var param = GetParam(message); string body = PrepareBodyMessage(param, mailTemplate.EmailContent); if (mailTemplate.EmailDisclaimerNeeded) { body += mailTemplate.EmailDisclaimerContent; } if (string.IsNullOrEmpty(message.AttachedFileName)) { await CommunicationContainer.MailClient.SendAsync(body, mailTemplate.Title, to, mailTemplate.SenderEmail, true, message.ImageBase64); } else { await CommunicationContainer.MailClient.SendRawEmail(body, mailTemplate.Title, to, mailTemplate.SenderEmail, true, message.AttachedFileName, message.FileContentType); } DateTime updatedOn = DateTime.Now; CommunicationContainer.Logger.LogEmail(message.SendTo, body, mailTemplate.Notes, null, updatedOn, Convert.ToString(message.AbsenceId), "OK"); } catch (System.Exception ex) { DateTime updatedOn = DateTime.Now; CommunicationContainer.Logger.LogEmail(message.SendTo, null, "Subzz Job Notification", Convert.ToString(ex), updatedOn, Convert.ToString(message.AbsenceId), "FAIL"); //CommunicationContainer.Logger.LogError(ex, "Process", "EmailProcessor"); //throw ex; } finally { protector = null; } }
public User(string userName, string nickName, string pwd) { UserName = userName; NickName = nickName; Pwd = EncryptProvider.GetMd5($"{ pwd}{PwdSalt}"); }
public DES_Test() { _Key = EncryptProvider.CreateDesKey(); _IV = EncryptProvider.CreateDesIv(); }
void OnLoggedOn(SteamUser.LoggedOnCallback callback) { var id = AccountIndex; if (callback.Result != EResult.OK) { if (callback.Result == EResult.AccountLogonDenied) { // if we recieve AccountLogonDenied or one of it's flavors (AccountLogonDeniedNoMailSent, etc) // then the account we're logging into is SteamGuard protected // see sample 5 for how SteamGuard can be handled Console.WriteLine("[Steam] Unable to logon to Steam: This account is SteamGuard protected." + "\n"); isRunning = false; return; } Console.WriteLine("[Steam] Unable to logon to Steam: {0} / {1}" + "\n", callback.Result, callback.ExtendedResult); isRunning = false; return; } Console.WriteLine("[Steam] Successfully logged on!" + "\n"); var data = new dataJson(); var ID = steamUser.SteamID; // at this point, we'd be able to perform actions on Steam if (File.Exists(appDataPath + @"\data.json")) { string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\SteamAccountGenerator"; var creds = File.ReadAllText(appDataPath + @"\data.json").Split(Convert.ToChar(",")); data = JsonConvert.DeserializeObject <dataJson>(EncryptProvider.AESDecrypt(creds[2], creds[0], creds[1])); } else { MessageBox.Show("Please set your settings\nthis menu will now close", "Error"); steamUser.LogOff(); steamClient.Disconnect(); this.Close(); } Console.WriteLine("[Steam] SteamID: " + ID.ToString() + "\n"); Console.WriteLine("[Converted] SteamID Converted: " + ID.ConvertToUInt64() + "\n"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.steampowered.com/ISteamUser/GetPlayerBans/v1/?key=" + data.key + "&steamids=" + ID.ConvertToUInt64()); request.AutomaticDecompression = DecompressionMethods.GZip; try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) using (Stream stream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(stream)) { var html = reader.ReadToEnd(); var responses = JObject.Parse(html); Console.WriteLine("[Steam API] Results:\n HTML: " + html + "\n Response: " + responses.ToString() + "\n"); try { if ((string)responses["players"][0]["CommunityBanned"].ToString() != "False") { Console.WriteLine("[BAN] Community banned\n Returned: " + (string)responses["players"][0]["CommunityBanned"].ToString() + "\n"); account_status.Text = "BANNED"; account_status.ForeColor = Color.Red; } else { if (!importing) { if ((string)responses["players"][0]["VACBanned"].ToString() != "False") { Console.WriteLine("[BAN] VAC Banned\n Returned: " + (string)responses["players"][0]["VACBanned"].ToString() + "\n"); account_status.Text = "BANNED"; account_status.ForeColor = Color.Red; } else { if ((string)responses["players"][0]["NumberOfGameBans"].ToString() != "0") { Console.WriteLine("[BAN] Game Banned\n Returned: " + (string)responses["players"][0]["NumberOfGameBans"].ToString() + "\n"); account_status.Text = "BANNED"; account_status.ForeColor = Color.Red; } else { account_status.Text = "Unbanned"; account_status.ForeColor = Color.Green; } } } else { var banned = false; if ((string)responses["players"][0]["VACBanned"].ToString() != "False") { Console.WriteLine("[BAN] VAC Banned\n Returned: " + (string)responses["players"][0]["VACBanned"].ToString() + "\n"); account_status.Text = "BANNED"; account_status.ForeColor = Color.Red; banned = true; } else { if ((string)responses["players"][0]["NumberOfGameBans"].ToString() != "0") { Console.WriteLine("[BAN] Game Banned\n Returned: " + (string)responses["players"][0]["NumberOfGameBans"].ToString() + "\n"); account_status.Text = "BANNED"; account_status.ForeColor = Color.Red; banned = true; } else { account_status.Text = "Unbanned"; account_status.ForeColor = Color.Green; } } if (banned) { Console.WriteLine("Listed banned account:\n " + usernames[id] + ":" + passwords[id] + "\n"); bannedAccs += "\n " + usernames[id] + ":" + passwords[id]; } else { Console.WriteLine("Listed unbanned account:\n " + usernames[id] + ":" + passwords[id] + "\n"); unbannedAccs += "\n " + usernames[id] + ":" + passwords[id]; } } } } catch (Exception a) { var result = MessageBox.Show("Unexpected error caught\nDid you input the right API key?", "Incorrect API key"); if (result == DialogResult.OK) { parent.ShowSettings(); this.Close(); } } Console.WriteLine("[Form] Reenabling next and back buttons, Logging off steam..." + "\n"); account_back.BeginInvoke(new MethodInvoker(() => { account_back.Enabled = true; })); account_next.BeginInvoke(new MethodInvoker(() => { account_next.Enabled = true; })); steamUser.LogOff(); } }catch (Exception a) { if (a.Message == "The remote server returned an error: (403) Forbidden.") { Console.WriteLine(a.Message); var result = MessageBox.Show("Unexpected error caught\nDid you input the right API key?", "Incorrect API key"); if (result == DialogResult.OK) { parent.ShowSettings(); this.Close(); } } else { Console.WriteLine("Error Caught, Please open a issue on github!\n" + a.Message); MessageBox.Show(a.Message, "Error Caught"); } } }
public IActionResult RequestSigning(IFormFile officeFile, IFormFile certFile, [FromForm] string certPw, [FromForm] bool analyse) { //prepare ac (used for logging / error return as well) ApiActivity ac = new ApiActivity(); ac.Operation = ApiActivity.ApiOperation.RequestSigning; ac.ClientIPAddress = HttpContext.Connection.RemoteIpAddress.ToString(); ac.StatusUrl = GHelper.generateUrl(GHelper.UrlType.StatusUrl, ac, _httpctx); ac.DownloadUrl = GHelper.generateUrl(GHelper.UrlType.DownloadUrl, ac, _httpctx); if (officeFile != null && certFile != null) { ac.UserOfficeFilename = officeFile.FileName; ac.UserCertFilename = certFile.FileName; ac.Message = $"Starting request Signing with {officeFile.FileName} and cert file {certFile.FileName}..."; _asvc.addUpdateApiActivity(ac); if (certPw != null) { _l.Debug($"Provided cert PW = \"{certPw}\""); // Read secrets JObject secretsConfig = JObject.Parse(System.IO.File.ReadAllText(@"secrets.json")); //secrets.json file not checked in. .gitignore var aesKey = (string)secretsConfig["aesKey"]; var encryptedCertPw = EncryptProvider.AESEncrypt(certPw, aesKey); // save pw encrypted in DB ac.EncCertPw = encryptedCertPw; } else { _l.Debug($"No cert PW provided!"); } //------- CHECKS //check for valid file extension string officeFileExt = Path.GetExtension(officeFile.FileName.ToLowerInvariant()); if (!GHelper.fileHasAllowedExtension(GHelper.ExtensionType.OfficeFile, officeFileExt)) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = $"Office File extension {officeFileExt} not valid!"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } string certFileExt = Path.GetExtension(certFile.FileName.ToLowerInvariant()); if (!GHelper.fileHasAllowedExtension(GHelper.ExtensionType.CertFile, certFileExt)) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = $"Certificate File extension {certFileExt} not valid!"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } // check magic number file types if (!(GHelper.fileHasValidFormat(GHelper.ExtensionType.OfficeFile, officeFile.OpenReadStream()))) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = $"Office File {officeFile.FileName} not a valid office file!"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } if (!(GHelper.fileHasValidFormat(GHelper.ExtensionType.CertFile, certFile.OpenReadStream()))) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = $"Cert File {certFile.FileName} not a valid cert file!"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } // check PW field int maxPwLength = Int32.Parse(_conf.GetSection("Security")["MaxCertPwLength"]); if (certPw != null && certPw.Length > maxPwLength) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = $"Cert Pw exceeding max Length: {maxPwLength}!"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } // SAVE FILES //save office file with unique filename, not enumerable string uniFilenameOfficeFile = GHelper.createUniqueFileName(officeFile.FileName); string systemFolderOfficeFile = GHelper.getOfficeFilesSystemDir(_webHostEnv, _conf); string systemFileNameOfficeFile = Path.Combine(systemFolderOfficeFile, uniFilenameOfficeFile); ac.SystemOfficeFilename = systemFileNameOfficeFile; // create dir if not exist System.IO.Directory.CreateDirectory(systemFolderOfficeFile); _l.Debug($"Saving Office file to {systemFolderOfficeFile}"); using (var fileStream = new FileStream(systemFileNameOfficeFile, FileMode.Create)) { officeFile.CopyTo(fileStream); } //save cert file with unique filename, not enumerable string uniFilenameCertFile = GHelper.createUniqueFileName(certFile.FileName); string systemFolderCertFile = GHelper.getCertFilesSystemDir(_webHostEnv, _conf); string systemFileNameCertFile = Path.Combine(systemFolderCertFile, uniFilenameCertFile); systemFileNameCertFile = systemFileNameCertFile.Replace('/', Path.DirectorySeparatorChar).Replace('\\', Path.DirectorySeparatorChar); ac.SystemCertFilename = systemFileNameCertFile; // create dir if not exist System.IO.Directory.CreateDirectory(systemFolderCertFile); _l.Debug($"Saving cert file to {systemFileNameCertFile}"); using (var fileStream = new FileStream(systemFileNameCertFile, FileMode.Create)) { certFile.CopyTo(fileStream); } if (analyse) { // Queue foor ANALYSING ac.Status = ApiActivity.ApiStatus.QueuedAnalysis; ac.Message = "File queued for analysis"; _asvc.addUpdateApiActivity(ac); _l.Debug("Analysis requested, queuing for analysis..."); } else { // Queue for SIGNING ac.Status = ApiActivity.ApiStatus.QueuedSigning; ac.Message = "File queued for signing"; _asvc.addUpdateApiActivity(ac); _l.Debug("NO analysis requested, queuing for signing at once..."); } // RETURN STATUS PAGE _l.Debug($"Returning Queued API Status for Key {ac.UniqueKey}"); return(Content(ac.getWebresult())); } else { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = "Office File or Cert File not submitted. Both required for signing!"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } }
/// <summary> /// sha256 加密 /// </summary> /// <param name="input">字符串</param> /// <returns></returns> public static string Sha256Encry(this string input) { return(EncryptProvider.Sha256(input)); }
public IActionResult RequestSigning(IFormFile officeFile, [FromForm] bool analyse, string profileName) { //prepare ac (used for logging / error return as well) ApiActivity ac = new ApiActivity(); ac.Operation = ApiActivity.ApiOperation.RequestSigning; ac.ClientIPAddress = HttpContext.Connection.RemoteIpAddress.ToString(); ac.StatusUrl = GHelper.generateUrl(GHelper.UrlType.StatusUrl, ac, _httpctx); ac.DownloadUrl = GHelper.generateUrl(GHelper.UrlType.DownloadUrl, ac, _httpctx); if (officeFile == null) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = "Office File not submitted. Required for signing!"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } ac.UserOfficeFilename = officeFile.FileName; ac.Message = $"Starting request Signing with {officeFile.FileName} and profile ID {profileName}..."; //--- check if valid profile name was provided //check if secrets file present string secretFilename = "secrets.json"; if (!System.IO.File.Exists(secretFilename)) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = "secrets file not found for reading profiles"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } //read secrets config JObject jsonConfig = JObject.Parse(System.IO.File.ReadAllText(secretFilename)); var profileCertFile = (string)jsonConfig["SigningProfiles"][profileName]["CertFile"]; var profileCertPw = (string)jsonConfig["SigningProfiles"][profileName]["CertPw"]; if (profileCertFile == null || profileCertPw == null) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = $"No certfile or certPW found for Profilename {profileName}"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } ac.UserCertFilename = profileCertFile; //check if cert file from settings is really on filesystem var systemCertFileName = Path.Combine(GHelper.getCertFilesSystemDir(_webHostEnv, _conf), ac.UserCertFilename); if (!System.IO.File.Exists(systemCertFileName)) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = $"certfile {ac.SystemCertFilename} not found for Profilename {profileName}"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } ac.SystemCertFilename = systemCertFileName; // Save certPW encyrpted in AC, to be decrypted by signer service later. // todo: better PW handling -> was already in cleartext in secrets file _l.Debug($"Provided cert PW = \"{profileCertPw}\""); // Read secrets JObject secretsConfig = JObject.Parse(System.IO.File.ReadAllText(@"secrets.json")); //secrets.json file not checked in. .gitignore var aesKey = (string)secretsConfig["aesKey"]; var encryptedCertPw = EncryptProvider.AESEncrypt(profileCertPw, aesKey); // save pw encrypted in DB ac.EncCertPw = encryptedCertPw; //------- CHECKS //check for valid file extension string officeFileExt = Path.GetExtension(officeFile.FileName.ToLowerInvariant()); if (!GHelper.fileHasAllowedExtension(GHelper.ExtensionType.OfficeFile, officeFileExt)) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = $"Office File extension {officeFileExt} not valid!"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } // check magic number file types if (!(GHelper.fileHasValidFormat(GHelper.ExtensionType.OfficeFile, officeFile.OpenReadStream()))) { ac.Status = ApiActivity.ApiStatus.Error; ac.Message = $"Office File {officeFile.FileName} not a valid office file!"; _l.Error(ac.Message); _asvc.addUpdateApiActivity(ac); return(Content(ac.getWebresult())); } // SAVE FILES //save office file with unique filename, not enumerable string uniFilenameOfficeFile = GHelper.createUniqueFileName(officeFile.FileName); string systemFolderOfficeFile = GHelper.getOfficeFilesSystemDir(_webHostEnv, _conf); string systemFileNameOfficeFile = Path.Combine(systemFolderOfficeFile, uniFilenameOfficeFile); // create dir if not exist System.IO.Directory.CreateDirectory(systemFolderOfficeFile); _l.Debug($"Saving Office file to {systemFolderOfficeFile}"); using (var fileStream = new FileStream(systemFileNameOfficeFile, FileMode.Create)) { officeFile.CopyTo(fileStream); } ac.SystemOfficeFilename = systemFileNameOfficeFile; if (analyse) { // Queue for ANALYSING ac.Status = ApiActivity.ApiStatus.QueuedAnalysis; ac.Message = "File queued for analysis"; _asvc.addUpdateApiActivity(ac); _l.Debug("Analysis requested, queuing for analysis..."); } else { // Queue for SIGNING ac.Status = ApiActivity.ApiStatus.QueuedSigning; ac.Message = "File queued for signing"; _asvc.addUpdateApiActivity(ac); _l.Debug("NO analysis requested, queuing for signing at once..."); } // RETURN STATUS _l.Debug($"Returning Queued API Status for Key {ac.UniqueKey}"); return(Content(ac.getWebresult())); }
public ActionResult Create(TenantModel tenantModel) { if (ModelState.IsValid) { var _tenantEntity = tenantModel.ToEntity(); _tenantEntity.Active = true; _tenantEntity.CreatedDate = DateTime.Now; _tenantEntity.CreatedBy = _userInfo.ID; _tenantEntity.ModifiedBy = _userInfo.ID; _tenantEntity.ModifiedDate = DateTime.Now; _tenantEntity.DbName = "MultiOrg_" + _tenantEntity.TenantNameAlias; try { if (_tenantService.CheckAlias(_tenantEntity.TenantNameAlias)) { // create directory folder tenant _pathFiles = "/tenants/" + tenantModel.TenantNameAlias; var _newPath = Server.MapPath(_pathFiles); if (!Directory.Exists(_newPath)) { Directory.CreateDirectory(_newPath); } // create file default var _fileDefault = "default.png"; var _sourceFile = Path.Combine(Server.MapPath(_tempFiles), _fileDefault); var _destinationFile = Path.Combine(Server.MapPath(_pathFiles), _fileDefault); System.IO.File.Copy(_sourceFile, _destinationFile); if (!string.IsNullOrEmpty(_logoModel.FileName)) { _tenantEntity.CompanyLogo = _pathFiles + "/" + _logoModel.FileName; //move a file from temps file to tenant folder _sourceFile = Path.Combine(Server.MapPath(_tempFiles), _logoModel.FileName); _destinationFile = Path.Combine(Server.MapPath(_pathFiles), _logoModel.FileName); if (System.IO.File.Exists(_destinationFile)) { System.IO.File.Delete(_destinationFile); } System.IO.File.Move(_sourceFile, _destinationFile); _logoModel = null; } else { _tenantEntity.CompanyLogo = _pathFiles + "/" + _fileDefault; } // insert new tenant _tenantService.Insert(_tenantEntity); _unitOfWork.SaveChanges(); // write log _helper.InsertLogActive(_logService, _unitOfWork, "Tenants", "Insert new tenant", 1, true); var result = new SqlQueryExcute().CreateDBByTenant(_tenantEntity.DbName, _tenantEntity.DbUsername, _tenantEntity.DbPassword); // add new user var _tenantId = _tenantService.GetTanentByAlias(_tenantEntity.TenantNameAlias).TenantId; if (_tenantId > 0) { try { var _newUser = new crm_Users(); _newUser.Username = tenantModel.Username ?? _tenantEntity.DbUsername; string encryptPassword = ""; string passwordSalt = ""; passwordSalt = EncryptProvider.GenerateSalt(); encryptPassword = EncryptProvider.EncryptPassword(tenantModel.Password, passwordSalt); _newUser.PasswordSalt = passwordSalt; _newUser.Password = encryptPassword; _newUser.TenantId = _tenantId; _newUser.CreatedDate = DateTime.Now; _newUser.Active = true; _newUser.Email = tenantModel.ContactEmail ?? _tenantEntity.Email; _newUser.DisplayName = tenantModel.ContactName ?? _tenantEntity.TenantName; _newUser.FullName = tenantModel.ContactName ?? _tenantEntity.TenantName; _newUser.FacebookURL = _tenantEntity.FacebookURL; _newUser.TwitterURL = _tenantEntity.TwitterURL; _newUser.GoogleplusURL = _tenantEntity.GoogleplusURL; _newUser.LinkedURL = _tenantEntity.LinkedURL; _newUser.Image = _tenantEntity.CompanyLogo; _newUser.Phone = tenantModel.ContactPhone; _newUser.Mobile = tenantModel.MobilePhone; _userService.Insert(_newUser); _unitOfWork.SaveChanges(); _helper.InsertLogActive(_logService, _unitOfWork, "Users", "Insert user tenant admin", 1, true); // add tenant admin role var _userId = _userService.GetUserByUsername(_newUser.Username).ID; if (_userId > 0) { try { // AssignedUserId var _ownTenantEntity = _tenantService.Find(_tenantId); _ownTenantEntity.AssignedUserId = _userId; _ownTenantEntity.ObjectState = ObjectState.Modified; _tenantService.Update(_ownTenantEntity); _unitOfWork.SaveChanges(); _helper.InsertLogActive(_logService, _unitOfWork, "Tenant", "Assigned user for tenant", 2, true); // create group role var _roleEntity = new crm_Roles(); //Console.WriteLine(((WeekDays)1).ToString()); // TenantAdmin = 512 _roleEntity.RoleName = UserGroupEnum.TenantAdmin.ToString(); _roleEntity.Active = true; _roleEntity.MaskPermission = (int)UserGroupEnum.TenantAdmin + 15; _roleEntity.TenantId = _tenantId; _roleEntity.PermissionType = (int)UserGroupEnum.TenantAdmin; _roleService.Insert(_roleEntity); _unitOfWork.SaveChanges(); // add Manager = 256 _roleEntity = new crm_Roles(); _roleEntity.RoleName = UserGroupEnum.Manager.ToString(); _roleEntity.Active = true; _roleEntity.MaskPermission = (int)UserGroupEnum.Manager + 15; _roleEntity.TenantId = _tenantId; _roleEntity.PermissionType = (int)UserGroupEnum.Manager; _roleService.Insert(_roleEntity); _unitOfWork.SaveChanges(); // add Support = 128 _roleEntity = new crm_Roles(); _roleEntity.RoleName = UserGroupEnum.Support.ToString(); _roleEntity.Active = true; _roleEntity.MaskPermission = (int)UserGroupEnum.Support + 15; _roleEntity.TenantId = _tenantId; _roleEntity.PermissionType = (int)UserGroupEnum.Support; _roleService.Insert(_roleEntity); _unitOfWork.SaveChanges(); // Marketing=64 _roleEntity = new crm_Roles(); _roleEntity.RoleName = UserGroupEnum.Marketing.ToString(); _roleEntity.Active = true; _roleEntity.MaskPermission = (int)UserGroupEnum.Marketing + 15; _roleEntity.TenantId = _tenantId; _roleEntity.PermissionType = (int)UserGroupEnum.Marketing; _roleService.Insert(_roleEntity); _unitOfWork.SaveChanges(); // Sales = 32 _roleEntity = new crm_Roles(); _roleEntity.RoleName = UserGroupEnum.Sales.ToString(); _roleEntity.Active = true; _roleEntity.MaskPermission = (int)UserGroupEnum.Sales + 15; _roleEntity.TenantId = _tenantId; _roleEntity.PermissionType = (int)UserGroupEnum.Sales; _roleService.Insert(_roleEntity); _unitOfWork.SaveChanges(); // NormalUser = 16 _roleEntity = new crm_Roles(); _roleEntity.RoleName = UserGroupEnum.NormalUser.ToString(); _roleEntity.Active = true; _roleEntity.MaskPermission = (int)UserGroupEnum.NormalUser + 15; _roleEntity.TenantId = _tenantId; _roleEntity.PermissionType = (int)UserGroupEnum.NormalUser; _roleService.Insert(_roleEntity); _unitOfWork.SaveChanges(); // map role tenant admin var _newRole = new crm_UserRoles(); _newRole.RoleID = _roleService.GetRoleIdByPermisstionType(_tenantId, (int)UserGroupEnum.TenantAdmin); _newRole.UserID = _userId; _userRoleService.Insert(_newRole); _unitOfWork.SaveChanges(); _helper.InsertLogActive(_logService, _unitOfWork, "User Role", "Insert role tenant admin for user", 1, true); } catch { _helper.InsertLogActive(_logService, _unitOfWork, "User Role", "Insert role tenant admin for user", 1, false); } } } catch { _helper.InsertLogActive(_logService, _unitOfWork, "Users", "Insert user tenant admin", 1, false); } } } MessageBoxModel.ShowMessage = "Add tenant " + _tenantEntity.TenantName + " success!"; return(RedirectToAction("Index")); } catch { _helper.InsertLogActive(_logService, _unitOfWork, "Tenants", "Insert new tenant", 1, false); return(View(tenantModel)); } } return(View(tenantModel)); }
/// <summary> /// SHA512加密 /// </summary> /// <param name="str">未加密字符串</param> /// <returns>已加密字符串</returns> public static string Sha512(string str) { return(EncryptProvider.Sha512(str)); }
static void Main(string[] args) { var aesKey = EncryptProvider.CreateAesKey(); var key = aesKey.Key; var iv = aesKey.IV; /* * var _max = 10000; * * var s1 = Stopwatch.StartNew(); * * for (int i = 0; i < _max; i++) * { * aesKey = EncryptProvider.CreateAesKey(); * } * s1.Stop(); * * var s2 = Stopwatch.StartNew(); * for (int i = 0; i < _max; i++) * { * aesKey = EncryptProvider.CreateAesKey(false); * } * s2.Stop(); * * Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); * Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); * Console.Read(); */ var plaintext = "Hello world 123456789/*-+!@#$%^&*()-=_+"; var encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv); var decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv); Console.WriteLine("Plaintext to encrypt: " + plaintext); Console.WriteLine(); Console.WriteLine("** AES SecureRandom **"); Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted); Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted); //Console.WriteLine("Key: {0} IV: {1}", key, iv); Console.WriteLine(); Console.WriteLine("** AES SecureRandom with Byte input/output **"); byte[] bencrypted = EncryptProvider.AESEncrypt(Encoding.UTF8.GetBytes(plaintext), key, iv); byte[] bdecrypted = EncryptProvider.AESDecrypt(bencrypted, key, iv); Console.WriteLine("Encrypted " + " (Length: " + bencrypted.Length + ") " + Encoding.UTF8.GetString(bencrypted)); Console.WriteLine("Decrypted " + " (Length: " + bdecrypted.Length + ") " + Encoding.UTF8.GetString(bdecrypted)); //Console.WriteLine("Key: {0} IV: {1}", key, iv); Console.WriteLine(); Console.WriteLine("** AES Non-SecureRandom **"); aesKey = EncryptProvider.CreateAesKey(false); key = aesKey.Key; iv = aesKey.IV; encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv); decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv); Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted); Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted); //Console.WriteLine("Key: {0} IV: {1}", key, iv); Console.WriteLine(); Console.WriteLine("** RSA **"); var rsaKey = EncryptProvider.CreateRsaKey(); var publicKey = rsaKey.PublicKey; var privateKey = rsaKey.PrivateKey; //var exponent = rsaKey.Exponent; //var modulus = rsaKey.Modulus; encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext); encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext, RSAEncryptionPadding.Pkcs1); decrypted = EncryptProvider.RSADecrypt(privateKey, encrypted, RSAEncryptionPadding.Pkcs1); Console.WriteLine("Encrypted: " + encrypted); Console.WriteLine("Decrypted: " + decrypted); //Console.WriteLine("publicKey: {0} privateKey: {1}", publicKey, privateKey); Console.WriteLine(); Console.WriteLine("** SHA **"); Console.WriteLine("SHA1: " + EncryptProvider.Sha1(plaintext)); Console.WriteLine("SHA256: " + EncryptProvider.Sha256(plaintext)); Console.WriteLine("SHA384: " + EncryptProvider.Sha384(plaintext)); Console.WriteLine("SHA512: " + EncryptProvider.Sha512(plaintext)); Console.ReadKey(); }
/// <summary> /// 根据关键字查询文章 /// </summary> /// <param name="keyword">关键字</param> /// <param name="langId">语言id</param> /// <returns></returns> dynamic IArticle.SearchByKeyword(string keyword, int langId) { string key_id_md5 = EncryptProvider.Md5((keyword + langId), MD5Length.L16); //检查Redis是否有记录 if (m_redis.HashExists("SearchByKeyword", key_id_md5)) { return(m_redis.HashGet <dynamic>("SearchByKeyword", key_id_md5)); } /* * 1.将相关数据查询 * 2.匹配内容 * 3.匹配度排序 */ IQueryable <TType> types = m_iType.RetrieveArticleTypesByLangId(langId); string partten = @"(?<=[??!!::。.\n]*)[^??!!::。.\n]*" + keyword + "[^??!!::。.\n]*.(?<=[??!!::。.\n]*)"; //string partten = @"(?<=[。|?|!|:|.|?|!|:])*" + keyword + ".*?(?<=[。|?|!|:|.|?|!|:])"; dynamic key_search = types.SelectMany(sm => m_db.TArticleLang .Include(i => i.User) .Include(i => i.Type) .Include(i => i.THelpful) .Where( L => sm.TypeId == L.TypeId && ( L.Title.Contains(keyword) || L.Content.Contains(keyword) ) ) .Select(s => new { s.ArticleLangId, s.Title, s.Commentable, s.Flag, s.ArticleId, s.UpdateTime, s.CreateTime, Type = new { s.Type.TypeId, s.Type.Name, s.Type.Description, s.Type.Parent }, User = new { s.User.UserId, s.User.UserName, s.User.Photo }, Content = Regex.Match(s.Content, partten).Value, CommentCount = m_db.TComment.Where(w => w.ArticleLangId == s.ArticleLangId).Count(), Helpful = s.THelpful.Where(w => w.ArticleLangId == s.ArticleLangId && w.Helpful == 1).Count(), })) .OrderByDescending(ob => Regex.Matches(ob.Title, keyword).Count + Regex.Matches(ob.Content, keyword).Count) .ToList(); // Regex.Matches(s.Content, keyword) // .OrderByDescending(ob => Regex.Matches(ob.Value, keyword).Count) // .FirstOrDefault().Value //记录搜索结果到Redis m_redis.HashSet("SearchByKeyword", key_id_md5, key_search, TimeSpan.FromMinutes(30)); return(JArray.FromObject(key_search)); }