C#写了一个简单的注册机制 每次生成的注册码都一样 求解

qq_29575049 2017-04-20 11:57:52
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Management;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
Random rd = new Random();
int num1 = rd.Next(100000, 999999);
int num2 = rd.Next(100000, 999999);
textBox1.Text = "" + num1 + getCpu() + num2;


string apppath = Environment.CurrentDirectory;
string path = apppath + @"\key.txt";
string str;
StreamReader sr = new StreamReader(path, false);
try
{

str = sr.ReadLine().ToString();
sr.Close();
this.textBox2.Text = str;///读取
}
catch
{

sr.Close();
}
// textBox2.Text = line;




}

public string getCpu()
{
string strCpu = null;
ManagementClass myCpu = new ManagementClass("win32_Processor");
ManagementObjectCollection myCpuConnection = myCpu.GetInstances();
foreach (ManagementObject myObject in myCpuConnection)
{
strCpu = myObject.Properties["Processorid"].Value.ToString();
break;
}
return strCpu;
}

private void button1_Click(object sender, EventArgs e)
{
string str1 = textBox1.Text.Substring(6, 16);
var md5 = new MD5CryptoServiceProvider();
string t2 = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(str1)), 4, 8);
t2 = t2.Replace("-", "");

if (textBox2.Text == t2)
{
StreamWriter sw = new StreamWriter("key.txt", false);
sw.Write(textBox2.Text);

sw.Flush();
sw.Close();
Form1 f1 = new Form1();
f1.Show();
this.Hide();


}
else
{
if (textBox2.Text != "")
{
MessageBox.Show("注册码错误!");
}
}
...全文
376 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
TinanBao 2017-04-21
  • 打赏
  • 举报
回复
你这个随机种子都一样,出的随机数都一样,要设置随机种子,最好是根据时间设置,或者GUID,参考一下下面的文章,时间种子的 http://blog.csdn.net/tinanbao/article/details/52229216
Mooyi_水 2017-04-21
  • 打赏
  • 举报
回复
伪随机,最好是把random提出去
编程有钱人了 2017-04-21
  • 打赏
  • 举报
回复
引用 4 楼 qq_29575049 的回复:
[quote=引用 1 楼 hanjun0612 的回复:]
private void Form2_Load(object sender, EventArgs e)
        {
            Random rd = new Random();
}
改为

Random rd = new Random();
private void Form2_Load(object sender, EventArgs e)
        {
           
} 
试试看。一般都是时间种子的问题
运行错误[/quote] 什么错误?
大然然 2017-04-21
  • 打赏
  • 举报
回复
用guid, 觉得guid里的 横杠符号不好看的话,就把 横杠符号replace掉
qq_29575049 2017-04-20
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
private void Form2_Load(object sender, EventArgs e)
        {
            Random rd = new Random();
}
改为

Random rd = new Random();
private void Form2_Load(object sender, EventArgs e)
        {
           
} 
试试看。一般都是时间种子的问题
运行错误
angel6709 2017-04-20
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
private void Form2_Load(object sender, EventArgs e)
        {
            Random rd = new Random();
}
改为

Random rd = new Random();
private void Form2_Load(object sender, EventArgs e)
        {
           
} 
试试看。一般都是时间种子的问题
angel6709 2017-04-20
  • 打赏
  • 举报
回复
Random rd = new Random((int)DateTime.Now.Ticks); 这样?
正怒月神 2017-04-20
  • 打赏
  • 举报
回复
private void Form2_Load(object sender, EventArgs e)
        {
            Random rd = new Random();
}
改为

Random rd = new Random();
private void Form2_Load(object sender, EventArgs e)
        {
           
} 
试试看。一般都是时间种子的问题

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧