我正在使用Guid作为网站的随机匿名访问者标识符(既存储为cookie客户端大小,又存储在db服务器端),并且希望使用一种加密方式来生成Guid(以便减少碰撞的机会).
为了记录,在Guid中有16个字节(或128位).
这就是我的想法:
/// <summary>
/// Generate a cryptographically strong Guid
/// </summary>
/// <returns>a random Guid</returns>
private Guid GenerateNewGuid()
{
byte[] guidBytes = new byte[16]; // Guids are 16 bytes long
RNGCryptoServiceProvider random = new RNGCryptoServiceProvider();
random.GetBytes(guidBytes);
return new Guid(guidBytes);
}
有一个更好的方法吗?
编辑:
这将用于两个目的,一个用于访问者的唯一ID,一个用于购买的交易ID(短暂地是查看/更新敏感信息所需的令牌).
解决方法:
我通常只使用Guid.NewGuid();
http://msdn.microsoft.com/en-us/library/system.guid.newguid(v=vs.110).aspx