首页
我的博客
写文章
登录
注册
网站导航
互站首页
源码集市
服务市场
域名交易
网站交易
任务大厅
商家专区
互站社区
C# 产生真随机数(RNGCryptoServiceProv
原创
沐雪源码交易网
2018-11-17 14:46:22
评论(1)
阅读(598)
```csharp public static string Generate(string dictionary, int length) { string result = ""; RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); byte[] data = new byte[8]; int max = dictionary.Length - 1; for (int i = 0; i < length; i++) { rng.GetBytes(data); int rnd = (int)Math.Round(Math.Abs(BitConverter.ToInt64(data, 0)) / (decimal)long.MaxValue * max, 0); result += dictionary.Substring(rnd, 1); } return result; } ``` RNGCryptoServiceProvider 命名空间: System.Security.Cryptography 程序集: mscorlib(位于 mscorlib.dll) 微软有自带产生密码的(System.Web.Security.Membership.GeneratePassword),当然也是用到了随机数,它是怎样的呢?其源代码如下: ```csharp // System.Web.Security.Membership public static string GeneratePassword(int length, int numberOfNonAlphanumericCharacters) { if (length < 1 || length > 128) { throw new ArgumentException(SR.GetString("Membership_password_length_incorrect")); } if (numberOfNonAlphanumericCharacters > length || numberOfNonAlphanumericCharacters < 0) { throw new ArgumentException(SR.GetString("Membership_min_required_non_alphanumeric_characters_incorrect", new obje-ct[] { "numberOfNonAlphanumericCharacters" })); } string text; int num4; do { byte[] array = new byte[length]; char[] array2 = new char[length]; int num = 0; new RNGCryptoServiceProvider().GetBytes(array); for (int i = 0; i < length; i++) { int num2 = (int)(array[i] % 87); if (num2 < 10) { array2[i] = (char)(48 + num2); } else { if (num2 < 36) { array2[i] = (char)(65 + num2 - 10); } else { if (num2 < 62) { array2[i] = (char)(97 + num2 - 36); } else { array2[i] = Membership.punctuations[num2 - 62]; num++; } } } } if (num < numberOfNonAlphanumericCharacters) { Random random = new Random(); for (int j = 0; j < numberOfNonAlphanumericCharacters - num; j++) { int num3; do { num3 = random.Next(0, length); } while (!char.IsLetterOrDigit(array2[num3])); array2[num3] = Membership.punctuations[random.Next(0, Membership.punctuations.Length)]; } } text = new string(array2); } while (CrossSitescri-ptingValidation.IsDangerousString(text, out num4)); return text; } ```
关注下面的标签,发现更多相似文章
本文TAG标签:
分享
QQ分享
微博分享
微信扫一扫
收藏
c# 产生真随机数rngcryptose
上一篇:win10远程桌面连接,要求的函数不受支持 解决方法win10远程桌面连接,要求的函数不受支持 解决方法
下一篇:原猎豹移动总裁徐鸣再创业:进军航天win10远程桌面连接,要求的函数不受支持 解决方法
您好,
请先
登录
!请文明评论,不得违反国家法律法规!
已有
1
条评论
回复
开发搭建专家
2019-01-25 23:17:34
走过路过 决定还是错过
沐雪源码交易网
关注
TA的店铺
44
文章
26445
人气
32
评论
2
粉丝
专注.net技术,专注沐雪微店SaaS系统
Ta的最新文章
一岁的瑞幸,在争议中狂奔
C# 产生真随机数(RNGCryptoServiceProv
win10远程桌面连接,要求的函数不受支持 解决方法
这个领域诞生了市值130亿美元的独角兽,国内刚刚起步,腾讯也
在东南亚,双11和双12哪个更受欢迎?
最近评论
开发搭建专家
走过路过 决定还是错过
开发搭建专家
走过路过 决定还是错过
开发搭建专家
走过路过 决定还是错过
开发搭建专家
走过路过 决定还是错过
开发搭建专家
走过路过 决定还是错过
标签大全
小程序
(4)
网站建设公司
(3)
微信小程序
(3)
微信小程序开发
(3)
网站建设
(3)
网站
(2)
程序员
(2)
搜索引擎
(1)
区块链
(1)
电商
(1)
酒店小程序
(1)
新零售
(1)
小程序开源框架
(1)
手机网站搭建
(1)
ai
(1)
微信公众平台开发 沐雪微信多用户商城系统
(1)
产品
(1)
沐雪微信 saas 商城系统源码
(1)
python
(1)
沐雪微信 saas商城
(1)
阅读目录
已有 1 条评论