/// <summary> /// 二次加密数据方式 /// </summary> /// <param name="secondpwd">二次加密密码</param> /// <param name="str">加密字符串</param> /// <returns></returns> private string SecondPwdEncryptionData(string secondpwd, string str, PassWordBookSaveType type) { string sencondMd5 = IEncryptAndDecodeServer.GetMd532(secondpwd); //使用密码做AES加密 str = IEncryptAndDecodeServer.AesEncryption(str, secondpwd); //拼接字符串 str = sencondMd5 + str + IEncryptAndDecodeServer.GetMd532(sencondMd5 + str); //拼接外部Json结构 JObject jtoken = new JObject(); jtoken["SecondAuthentication"] = type.ToString(); jtoken["Data"] = str; return(jtoken.ToString()); }
/// <summary> /// 获取密码本 /// </summary> /// <param name="passwordbookfilepath">密码本路径</param> /// <param name="type">密码本类型</param> /// <param name="verifyCode">邮箱手机验证码或者二次验证码或者物理验证key</param> /// <returns></returns> public Model.PassWordBookModel GetPassWordBook(string passwordbookfilepath, PassWordBookSaveType type, string verifyCode) { return(null); }
/// <summary> /// 保存单个密码本 /// </summary> /// <param name="passwordbook">数据</param> /// <param name="type">密保类型</param> /// <returns>物理认证加密后的密保文件</returns> public string SavePassWordBook(Model.PassWordBookModel passwordbook, PassWordBookSaveType type) { return(SavePassWordBook(passwordbook, type, string.Empty)); }
/// <summary> /// 保存单个密码本 /// </summary> /// <param name="passwordbook">数据</param> /// <param name="type">密保类型</param> /// <param name="secondpwd">二次密码</param> /// <returns>物理认证加密后的密保文件</returns> public string SavePassWordBook(Model.PassWordBookModel passwordbook, PassWordBookSaveType type, string secondpwd) { if (!CachePassWordSecurity.GetInstance().IsCache) { throw new ExceptionSecurityTimeout("密码验证超时需要再次做密码验证"); } if (type == PassWordBookSaveType.AuthPassWord && string.IsNullOrEmpty(secondpwd)) { throw new Exception("使用二次密码认证,二次密码不能为空"); } string savePhysicsStr = string.Empty; //设置时间标记 passwordbook.CreateDate = DateTime.Now; Newtonsoft.Json.Linq.JToken jtoken = new JObject(); jtoken["SecondAuthentication"] = type.ToString(); jtoken["PassWord"] = passwordbook.PassWord; //移除密码显示存储。 passwordbook.PassWord = string.Empty; jtoken["Data"] = Newtonsoft.Json.JsonConvert.SerializeObject(passwordbook.Data); string saveStr = jtoken.ToString(); //针对不同类型进行不同的加密处置方式 switch (type) { case PassWordBookSaveType.Null: break; case PassWordBookSaveType.AuthEmailCode: break; case PassWordBookSaveType.AuthPhoneCode: break; case PassWordBookSaveType.AuthPassWord: saveStr = SecondPwdEncryptionData(secondpwd, saveStr, type); break; case PassWordBookSaveType.PhysicsCode: secondpwd = GetRandomPassWord(12); saveStr = SecondPwdEncryptionData(secondpwd, saveStr, type); //创建物理的密钥文件 savePhysicsStr = IEncryptAndDecodeServer.AesEncryption(secondpwd, CachePassWordSecurity.GetInstance().Security); break; default: break; } //使用密码证书做AES加密 saveStr = IEncryptAndDecodeServer.AesEncryption(saveStr, CachePassWordSecurity.GetInstance().Security); //保存密码本文件 IFileServer.SaveFile(saveStr, CurPassWordBookModel.PassWordCertificate, passwordbook.FilePath); CurPassWordBookModel.PassWordBooks.Add(passwordbook); SaveAccount(); return(savePhysicsStr); }
/// <summary> /// 二次认证事件基类 /// </summary> /// <param name="type">二次验证的类型</param> /// <param name="model">密码本对象</param> public EventSencondVerify(PassWordBookSaveType type, Model.PassWordBookModel model) { Type = type; PassWordBookModel = model; }