如何生成唯一的字母数字?

Tho*_*mas 5 c# random

如何使用c#始终生成17个字符的唯一字母数字数据.

Art*_*mix 5

生成新的Guid,并用模62分割17次.你得到的每个数字都是上面描述的char数组中的索引("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ1234567890").通过使用Guid,您可以保证您的价值与Guid一样独特.

如果您担心丢失唯一位,您可以使用MD5散列GUID,如下所示:

Guid guidValue = Guid.NewGuid();
MD5 md5 = MD5.Create();
Guid hashed = new Guid(md5.ComputeHash(guidValue.ToByteArray()));
Run Code Online (Sandbox Code Playgroud)

更新 Guid格式

根据该文档(RFC 4122)并与C#生成的GUID进行比较,它们是随机类型.

此类型具有以下模式:xxxxxxxx-xxxx-4xxx-Vxxx-xxxxxxxxxxxx,其中

  • x 是随机数和
  • V 位数为10yy的数字,其中yy是两个随机位.

所以,这里我们有128个随机位.因此,就唯一性而言,Guid只是一个大的随机数,你可以自由使用能够产生88位随机数的任何其他随机数生成算法. (例如RNGCryptoServiceProvider).

当然,用于生成Guids的方法可能会在未来版本的框架中发生变化,但目前Guid.NewGuid()在代码方面看起来像廉价的随机数生成器.