RNGCryptoServiceProvider 生成订单号
Posted tylertang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RNGCryptoServiceProvider 生成订单号相关的知识,希望对你有一定的参考价值。
先生成1~1000的随机数
class Program // Create a new instance of the RNGCryptoServiceProvider. private static System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider(); static void Main(string[] args) for (int i = 0; i < 100; i++) int a = NextRandom(1000, 1, rng); Console.WriteLine(string.Format("01", DateTime.Now.ToString("yyyyMMddHHmmssfff"), a.ToString().PadLeft(4, ‘0‘))); Console.Read(); private static int NextRandom(int numSeeds, int length, System.Security.Cryptography.RNGCryptoServiceProvider rng) // Create a byte array to hold the random value. byte[] randomNumber = new byte[length]; // Fill the array with a random value. rng.GetBytes(randomNumber); // Convert the byte to an uint value to make the modulus operation easier. uint randomResult = 0x0; for (int i = 0; i < length; i++) randomResult |= ((uint)randomNumber[i] << ((length - 1 - i) * 8)); return (int)(randomResult % numSeeds) + 1;
注意将RNGCryptoServiceProvider定义为循环外的静态变量。
经测试,这样在并发不大的时候能保证订单号的唯一性。
以上是关于RNGCryptoServiceProvider 生成订单号的主要内容,如果未能解决你的问题,请参考以下文章