/// <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); } }
/// <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); } } }
/// <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); } }
/// <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); } }