Arr*_*row 8 html c# language-agnostic asp.net security
我曾经用来RNGCryptoServiceProvider
生成基于字符串的订单ID,但是,有4个实例ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@$%^*()_-
会生成已经存在的订单ID.
它让我思考......
为什么我们不能只使用类似的东西:
<html>
...
<p>@GenerateOrderId()</p>
...
</html>
Run Code Online (Sandbox Code Playgroud)
和:
public string GenerateOrderId()
{
return "OID" +
DateTime.Now.Year + DateTime.Now.Month +
DateTime.Now.Day +
DateTime.Now.Hour +
DateTime.Now.Minute +
DateTime.Now.Second +
DateTime.Now.Millisecond;
}
Run Code Online (Sandbox Code Playgroud)
我被告知这是一个坏主意,但没有任何解释或理由,它仍然困在我的头脑中....我之所以要使用它,是因为它永远是独一无二的.
Fis*_*rdo 19
计算机以纳秒级速度工作.您可以保证几乎立即生成重复的订单ID.
你最好的选择是使用GUID [MSDN-C#] [MSDN-SQL](也就是UNIQUEIDENTIFIER
在SQL世界中).
永远不要Now
多次打电话给吸气器.在添加字符串时,"现在"可能会发生变化.你可以说DateTime.Now.ToString("yyyyMMddHHmmssfff")
或类似,但它更好Guid.NewGuid()
用于此.