思路
使用固定的字符串CLientID_(用于分别出这是用户id)
+现在的时间
+(设备信息+用户名)Md5转换
+随机数(确保唯一)
。
代码实现
需要输入的参数
length
:用于生成多少位随机数。
UserName
:用户的用户名。
public string CreateRandomCode(int length, string UserName) //随机生成客户端ID
{
string LocalTime = DateTime.Now.ToShortTimeString();//获取时间
LocalTime = LocalTime.Replace(":", "");//将符号去掉
string list = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";//list中存放着随机的元素
string UserhostName = Dns.GetHostName() + UserName;//获取主机名和用户名
MD5 mD5 = new MD5CryptoServiceProvider();//创建Md5实例
UserhostName = BitConverter.ToString(mD5.ComputeHash(Encoding.Default.GetBytes(UserhostName)), 4, 4);//生成多长的值,可以自行调参
UserhostName = UserhostName.Replace("-", "");//连接
Random random = new Random();//创建实例
string code = ""; //随机数
for (int i = 0; i < length; i++) //循环得到一个伪随机的数
{
code += list[random.Next(0, list.Length - 1)];
}
string ClientID = "Client_"+ LocalTime + UserhostName + code;//生成客户ID
return ClientID;
}
复制代码
调用方法
private void button1_Click(object sender, EventArgs e)//C#的Button按钮
{
textBox1.Text= CreateRandomCode(3, textBox2.Text);//最长随机数3位
}
复制代码
实现效果
拓展
因为C#自带MD5类,所以使用起来很方便。下面是这次用到的方法的用法。
MD5类方法 (来自官方文档)
ComputeHash(Byte[], Int32, Int32)
计算指定字节数组的指定区域的哈希值。
public byte[] ComputeHash (byte[] buffer, int offset, int count);
参数
- buffer
要计算其哈希代码的输入。
- offset
字节数组中的偏移量,从该位置开始使用数据。
- count
数组中用作数据的字节数。