我在互联网上找到了这个功能。这段代码假设生成一个给定X长度的唯一字符串。我想知道这个函数是否可以真正生成一个没有重复的唯一代码。我想要一个 8长度的唯一代码用于交易目的;交易,例如使用唯一的8长字母数字键作为标识符发送包裹详细信息作为需要保存在数据库中的标识符。
public static string GetUniqueKey(int maxSize)
{
char[] chars = new char[62];
chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray();
byte[] data = new byte[1];
RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider();
crypto.GetNonZeroBytes(data);
data = new byte[maxSize];
crypto.GetNonZeroBytes(data);
StringBuilder result = new StringBuilder(maxSize);
foreach (byte b in data)
{
result.Append(chars[b % (chars.Length)]);
}
return result.ToString();
}
注意:在保存代码之前,我不想每次检查代码是否存在,这就是为什么我要查找可以返回真正唯一密钥的代码的原因。