Exemplo n.º 1
0
        /// <summary> 检查注册.</summary>
        /// <remarks> windawings, 11/30/2015.</remarks>
        /// <returns> 是否注册成功.</returns>
        public bool CheckRegisterAgain()
        {
            try
            {
                if (!string.IsNullOrEmpty(Info.Register) && !string.IsNullOrEmpty(Info.SerialNumber))
                {
                    var time =
                        Convert.ToInt64((new FileInfo(DataName).CreationTime - StartTime).TotalMilliseconds).ToString();
                    //验证激活码
                    if (time.Equals(Info.FileDate) && VerifyData(Info.Register, Info.SerialNumber))
                    {
                        var info =
                            (FormRegister.RegisterInfo)
                            JsonConvert.DeserializeObject(
                                ClassEncrypt.Decrypt(Convert.FromBase64String(Info.Register)),
                                typeof(FormRegister.RegisterInfo));

                        CurrentUserId = info.UserCode;

                        return(true);
                    }
                }
                return(false);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        public FormRegister(ClassRegister register, bool login)
        {
            if (login)
            {
                InitializeComponent();
                Register = register;
                //获取已注册学号信息
                if (String.IsNullOrEmpty(Register.CurrentUserId))
                {
                    _textBoxStuNo.Text = Register.Info.Sno;
                }
                else
                {
                    _textBoxStuNo.Text = Register.CurrentUserId;
                }

                //获取机器码
                if (String.IsNullOrEmpty(Register.Info.Register) == false)
                {
                    var plainStr   = ClassEncrypt.Decrypt(Convert.FromBase64String(Register.Info.Register));
                    var jsonObject = (RegisterInfo)JsonConvert.DeserializeObject(plainStr, typeof(RegisterInfo));
                    if (jsonObject.UserCode.Equals(Register.Info.Sno))
                    {
                        _textBoxSerialNumber.Text = Register.Info.Register;
                        //获取激活码
                        if (Register.Info.IsRegistered)
                        {
                            _textBoxSinature.Text     = Register.Info.SerialNumber;
                            _textBoxSinature.ReadOnly = true;
                            _labelTimeLeftValue.Text  = Register.Info.TimeLeft + " 秒";
                        }
                    }
                    else
                    {
                        _buttonCancel.Enabled = false;
                    }
                }
            }
            else
            {
                MessageBox.Show("请先完成网页登陆!");
                Dispose();
            }
        }
Exemplo n.º 3
0
        /// <summary> 使用公钥验证签名.</summary>
        /// <remarks> Windawings, 11/25/2015.</remarks>
        /// <param name="originalDataStr"> The signature string.</param>
        /// <param name="dataStr">         The serial number string.</param>
        /// <returns> true if it succeeds, false if it fails.</returns>
        public static bool VerifyData(string originalDataStr, string dataStr)
        {
            try
            {
                var orginalDataBytes = Encoding.UTF8.GetBytes(originalDataStr);
                var signJsonStr      = ClassEncrypt.Decrypt(Convert.FromBase64String(dataStr));
                var signParam        =
                    (SignatureParameters)JsonConvert.DeserializeObject(signJsonStr, typeof(SignatureParameters));


                return(EcDsaSigner.VerifySignature(
                           orginalDataBytes,
                           new BigInteger(signParam.R),
                           new BigInteger(signParam.S)
                           ));
            }
            catch (Exception ex)
            {
                return(false);
            }
        }