c# – static RNGCryptoServiceProvider – 生成会话和随机密码
发布时间:2020-12-15 17:59:55 所属栏目:百科 来源:网络整理
导读:我正在构建一个Web服务,需要我生成自定义会话和随机密码等. 我想知道是否制作静态类并为整个网站使用1个静态RNGCryptoServiceProvider实例是个好主意? 1.来自多个http请求实例的线程是否安全? 2.安全吗?如果我允许某人在很短的时间内生成许多会话,是否有
我正在构建一个Web服务,需要我生成自定义会话和随机密码等.
我想知道是否制作静态类并为整个网站使用1个静态RNGCryptoServiceProvider实例是个好主意? 在我的服务中,其他用户知道有人登录时,我最初创建了一个新的RNGCryptoServiceProvider,当他们登录生成会话时,但我担心的是,如果这是基于当前的日期时间,理论上不可能只有一个人需要通过几千个会话“猜测”另一个用户的会话,如果他们大致知道他们登录的第二个? public static class random { private static RandomNumberGenerator _rng; protected static RandomNumberGenerator rng { get { if (_rng == null) _rng = new RNGCryptoServiceProvider(); return _rng; } } public static byte[] Bytes(int number) { var value = new byte[number]; rng.GetBytes(value); return value; } public static byte Byte { get { return Bytes(1)[0]; } } public static int Int { get { return BitConverter.ToInt32(Bytes(4),0); } } public static long Long { get { return BitConverter.ToInt64(Bytes(8),0); } } } 解决方法
1)如果它是加密安全的,它应该是,那么这种猜测应该是不可行的.
2)在旁注中,我建议在静态属性annd中删除JIT实例化,而不是执行以下操作: protected static readonly RandomNumberGenerator _rng = new RNGCryptoServiceProvider(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |