コード例 #1
0
        /// <summary>
        /// 生成加密密码凭证并缓存
        /// </summary>
        /// <param name="passWord">密码</param>
        private void GetPassWordSecurity(string passWord)
        {
            string securityStr = CurPassWordBookModel.Account + passWord;

            //1、SHA512
            securityStr = IEncryptAndDecodeServer.GetSha512(securityStr);
            //2、数组逆转
            var oldArray = securityStr.ToArray();

            Char[] newArray = new Char[oldArray.Length];
            for (int i = 0; i < oldArray.Length; i++)
            {
                newArray[oldArray.Length - 1] = oldArray[i];
            }
            //3、获取MD5
            securityStr = IEncryptAndDecodeServer.GetMd532(new string(newArray));

            CachePassWordSecurity.GetInstance().Security = securityStr;
        }
コード例 #2
0
        /// <summary>
        /// 获取缓存实例对象
        /// </summary>
        /// <returns></returns>
        public static CachePassWordSecurity GetInstance()
        {
            if (_cachePassWordSecurity == null)
            {
                lock (SyncRoot)
                {
                    if (_cachePassWordSecurity == null)
                    {
                        _cachePassWordSecurity = new CachePassWordSecurity();

                        //初始化计时器
                        _cachePassWordSecurity._timer           = new Timer(_cachePassWordSecurity.Timespan);
                        _cachePassWordSecurity._timer.AutoReset = false;
                        _cachePassWordSecurity._timer.Elapsed  += _cachePassWordSecurity.Timer_Elapsed;
                    }
                }
            }
            return(_cachePassWordSecurity);
        }
コード例 #3
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);
        }