C# HEX 字串 產生方式 (HEX KEY Gen)
很多時候,需要產生 HEX KEY 來做為唯一值,或是種子密碼來用,一般的情況我們會檢單的使用亂數(Random)來產生
但是,許多人都知道,如果要產生很長的HEX字串,這個 Ramdom 是不夠力的。
而且也有『不夠亂』的問題存在(受限於Random演算法)
當然如果需要32字元的 HEX 字串,也可以直接使用 GUID 產生方式來獲得:
但是如果要再更長,夠亂的HEX字串呢?
則可以使用 RNGCryptoServiceProvider 來處理
使用前記得引用 System.Security.Cryptography
長度的決定就由 byte 陣列大小來決定,因為一個byte可以生成2個字元的HEX碼,
所以byte[16]可以生成32字元HEX碼,byte[32]可以生成64字元的HEX碼,依此類推。
Random rnd = new Random();
int num = rnd.Next();
string hexData = num.ToString("X");
但是,許多人都知道,如果要產生很長的HEX字串,這個 Ramdom 是不夠力的。
而且也有『不夠亂』的問題存在(受限於Random演算法)
當然如果需要32字元的 HEX 字串,也可以直接使用 GUID 產生方式來獲得:
string guidString = Guid.NewGuid().ToString().Replace("-", "").ToUpper();
string hexData = guidString;
但是如果要再更長,夠亂的HEX字串呢?
則可以使用 RNGCryptoServiceProvider 來處理
使用前記得引用 System.Security.Cryptography
byte[] bytes = new byte[16];
using (var rng = new RNGCryptoServiceProvider())
{
rng.GetBytes(bytes);
}
string sBytes = BitConverter.ToString(bytes).Replace("-", "");
string hexData = sBytes;
長度的決定就由 byte 陣列大小來決定,因為一個byte可以生成2個字元的HEX碼,
所以byte[16]可以生成32字元HEX碼,byte[32]可以生成64字元的HEX碼,依此類推。
留言