示例#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);
            }
        }
示例#2
0
 /// <summary> 主构造函数.</summary>
 /// <remarks> windawings, 11/30/2015.</remarks>
 public ClassRegister()
 {
     try
     {
         //若存在存储文件,读取
         if (File.Exists(DataName))
         {
             var jsonStr = ClassEncrypt.DecryptReturn(DataName);
             Info = (BasicInfo)JsonConvert.DeserializeObject(jsonStr, typeof(BasicInfo));
         }
         else
         {
             Info.CaptchaType = "manual";
             Info.PictureType = "png";
             Info.ImgUrl      = FormMain.ImgUrl;
         }
         //若存在公钥文件
         if (File.Exists(PubliKeyPath))
         {
             var publicKeyBytes      = ClassEncrypt.ReadKeyPair(PubliKeyPath);
             var publicKeyParameters = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(publicKeyBytes);
             EcDsaSigner.Init(false, publicKeyParameters);
         }
         else
         {
             MessageBox.Show("公钥导入失败,将无法进行注册验证!若key.public文件丢失请联系作者!");
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
         Environment.Exit(0);
     }
 }
        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();
            }
        }
        /// <summary> 静态构造函数.</summary>
        /// <remarks> windawings, 11/30/2015.</remarks>
        static ClassCaptcha()
        {
            //获取字典文件
            var captchaJson =
                (Captcha[])
                JsonConvert.DeserializeObject(ClassEncrypt.DecryptReturn(@"bin\captcha.bin"),
                                              typeof(Captcha[]));

            foreach (var captcha in captchaJson)
            {
                if (CaptchaDic.ContainsKey(captcha.ImgGuid))
                {
                    CaptchaDic[captcha.ImgGuid] = captcha.Value;
                }
                else
                {
                    CaptchaDic.Add(captcha.ImgGuid, captcha.Value);
                }
            }
        }
示例#5
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);
            }
        }
 private void _buttonGetSerialNumber_Click(object sender, EventArgs e)
 {
     try
     {
         if ((!string.IsNullOrEmpty(_textBoxStuNo.Text.Trim()) && !Register.Info.IsRegistered) && string.IsNullOrEmpty(_textBoxSerialNumber.Text))
         {
             var info = new RegisterInfo
             {
                 MachineSerialNumber =
                     Convert.ToBase64String(
                         ClassEncrypt.Encrypt(
                             ClassRegister.GetCpu() + ClassRegister.GetHardWare() + ClassRegister.GetBaseBoard() +
                             ClassTime.GetNetWorkTime()
                             )
                         ),
                 UserCode = _textBoxStuNo.Text.Trim()
             };
             var encryptStr = JsonConvert.SerializeObject(info);
             Register.Info.Register    = Convert.ToBase64String(ClassEncrypt.Encrypt(encryptStr));
             _textBoxSerialNumber.Text = Register.Info.Register;
             Register.SetRegInfo();
         }
         else if (_textBoxStuNo.Text.Trim().Length == 0)
         {
             MessageBox.Show("请先输入注册学号!");
         }
         else if (Register.Info.IsRegistered)
         {
             MessageBox.Show("软件已注册,若试用期满请联系作者!");
         }
         else
         {
             MessageBox.Show("机器码已存在!");
         }
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.Message);
     }
 }
示例#7
0
 /// <summary> 存储个人信息.</summary>
 /// <remarks> windawings, 11/30/2015.</remarks>
 public void SetRegInfo()
 {
     try
     {
         if (File.Exists(DataName) == false)
         {
             using (var fileStream = new FileStream(DataName, FileMode.CreateNew))
             {
                 fileStream.Close();
                 var file = new FileInfo(DataName);
                 var span = file.CreationTime - StartTime;
                 Info.FileDate = Convert.ToInt64(span.TotalMilliseconds).ToString();
             }
         }
         var jsonStr = JsonConvert.SerializeObject(Info);
         ClassEncrypt.EncryptSave(jsonStr, DataName);
     }
     catch (Exception)
     {
         MessageBox.Show("数据参数出错!");
         Environment.Exit(0);
     }
 }