8 NİSAN 2009, ÇARŞAMBA
Benzersiz rasgele dize nesil
Olanlar MSDN Kütüphanesi tarafından oluşturulan gibi rasgele benzersiz bir dize oluşturmak istiyorum
Örneğin* *2,. Bir dize gibi 't9zk6eay' oluşturulması.
CEVAP
25 Ocak 2012, ÇARŞAMBA
Henüz hiç kimse güvenlik kodu sağlamıştır beri Ben Kimseye faydalı görürse aşağıdaki yazı.
string RandomString(int length, string allowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") {
if (length < 0) throw new ArgumentOutOfRangeException("length", "length cannot be less than zero.");
if (string.IsNullOrEmpty(allowedChars)) throw new ArgumentException("allowedChars may not be empty.");
const int byteSize = 0x100;
var allowedCharSet = new HashSet<char>(allowedChars).ToArray();
if (byteSize < allowedCharSet.Length) throw new ArgumentException(String.Format("allowedChars may contain no more than {0} characters.", byteSize));
// Guid.NewGuid and System.Random are not particularly random. By using a
// cryptographically-secure random number generator, the caller is always
// protected, regardless of use.
using (var rng = new System.Security.Cryptography.RNGCryptoServiceProvider()) {
var result = new StringBuilder();
var buf = new byte[128];
while (result.Length < length) {
rng.GetBytes(buf);
for (var i = 0; i < buf.Length && result.Length < length; i) {
// Divide the byte into allowedCharSet-sized groups. If the
// random value falls into the last group and the last group is
// too small to choose from the entire allowedCharSet, ignore
// the value in order to avoid biasing the result.
var outOfRangeStart = byteSize - (byteSize % allowedCharSet.Length);
if (outOfRangeStart <= buf[i]) continue;
result.Append(allowedCharSet[buf[i] % allowedCharSet.Length]);
}
}
return result.ToString();
}
}
Bunu Paylaş:
Rasgele dize büyük harf ve Python basa...
Rasgele, benzersiz, alfasayısal bir di...
Nasıl Postgresql rasgele bir dize oluş...
Nasıl alfa-sayısal rasgele bir dize ol...
Bir Liste olmadığını kontrol etmek içi...