Ejemplo n.º 1
0
        /// <summary>
        /// 重新加载数据
        /// </summary>
        /// <returns></returns>
        public void RefreshAccount()
        {
            string filePath = string.Empty;

            if (System.IO.Directory.Exists(BasePath + "data"))
            {
                var list = System.IO.Directory.GetDirectories(BasePath + "data");
                if (list != null && list.Length > 1)//存在多账号取默认
                {
                    //回头再修改
                    throw new Exception("还未实现");
                }
                else
                {
                    string fileName = list[0].Split('\\').Last();
                    filePath = list[0] + "\\" + fileName + ".json";
                }
            }
            string propertyFileStr = IFileServer.GetPropertyFile(filePath);
            JToken jtoken          = Newtonsoft.Json.JsonConvert.DeserializeObject <JToken>(propertyFileStr);

            _curAccountModel = new Model.AccountModel()
            {
                Account             = jtoken["Account"].ToString(),
                CreateDate          = jtoken["CreateDate"].Value <DateTime>(),
                Email               = jtoken["Email"].ToString(),
                IsComputer          = jtoken["IsComputer"].Value <bool>(),
                Phone               = jtoken["Phone"].ToString(),
                Remark              = jtoken["Remark"].ToString(),
                PassWordCertificate = jtoken["PassWordCertificate"].ToString(),
                PassWordHelp        = jtoken["PassWordHelp"].ToString(),
                //PassWordBooks = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Model.PassWordBookModel>>(jtoken["PassWordBooks"].ToString())
            };
            foreach (JToken item in jtoken["PassWordBooks"])
            {
                var model = new Model.PassWordBookModel();
                model.ConverToData(item.ToString());
                _curAccountModel.PassWordBooks.Add(model);
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
 /// <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));
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 保存单个密码本
 /// </summary>
 /// <param name="passwordbook">数据</param>
 public void SavePassWordBook(Model.PassWordBookModel passwordbook)
 {
     SavePassWordBook(passwordbook, PassWordBookSaveType.Null, string.Empty);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 二次认证事件基类
 /// </summary>
 /// <param name="type">二次验证的类型</param>
 /// <param name="model">密码本对象</param>
 public EventSencondVerify(PassWordBookSaveType type, Model.PassWordBookModel model)
 {
     Type = type;
     PassWordBookModel = model;
 }