小编Dee*_*101的帖子

随机数生成器安全性:BCryptGenRandom 与 RNGCryptoServiceProvider

对于那些赶时间,这是相关的争议Dual_EC_DRBG埋下NIST的SP800-90A内。

关于两个RNG:

  1. Microsoft BCRYPT 层基于他们的 C API。BCryptGenRandom遵循 NIST SP800-90A CTR_DRBG(即使用经批准的分组密码 AES 来创建随机位)。但是,尚不清楚它是否使用硬件随机源作为种子(或种子的一部分)......

  2. Microsoft .NETRNGCryptoServiceProvider是基于 C# 的。查看.NET 源代码(或此处),我看到它最终调用了 C++ 方法CapiNative.GenerateRandomBytes()。C#=>C++ 转换应该有一个 P/Invoke 存根,但我在框架源代码中的任何地方都找不到它。所以我不知道它是如何实际实施的。

有没有人有关于这两个随机数生成器的其他信息?是否使用 HW 随机种子(通过旧英特尔中的二极管噪声或RDRAND最新英特尔中的争议)。

PS:不确定这应该在安全、StackOverflow 或密码学...

.net c# security random cryptography

4
推荐指数
1
解决办法
5268
查看次数

如何调试在云中运行的Azure Web角色?

我们需要调试仅在云中表现出来的问题.它不会出现在模拟器中(即使使用云连接字符串等).我们在登台Web角色实例上安装了RDP,并在其上启用了WebDeploy,以便快速轻松地进行调试/代码更改.

我们想要的是更强大的东西,我们的本地VS2010(旗舰版)可以在远程Web角色上设置/触发断点并检查局部变量等.

有谁知道设置上述方法?

.net remote-debugging azure visual-studio-debugging azure-web-roles

3
推荐指数
1
解决办法
7861
查看次数

复制除流的最后16个字节以外的所有字节?早期检测到流末?

这与C#有关.我们有一种情况需要将整个源流复制到目标流中,除了最后16个字节.

编辑:流可以达到40GB,所以不能做一些静态byte []分配(例如:.ToArray())

看看MSDN文档,似乎只有当返回值为0时我们才能可靠地确定流的结束.返回值介于0和之间the requested size可能意味着字节"当前不可用"(这究竟意味着什么?)

目前,它按如下方式复制每个字节.inStream并且outStream是通用的 - 可以是内存,磁盘或网络流(实际上也是一些).

public static void StreamCopy(Stream inStream, Stream outStream)
{
    var buffer = new byte[8*1024];
    var last16Bytes = new byte[16];
    int bytesRead;
    while ((bytesRead = inStream.Read(buffer, 0, buffer.Length)) > 0)
    {
        outStream.Write(buffer, 0, bytesRead);
    }
    // Issues:
    // 1. We already wrote the last 16 bytes into 
    //    outStream (possibly over the n/w)
    // 2. last16Bytes = …
Run Code Online (Sandbox Code Playgroud)

.net c# networkstream stream

3
推荐指数
1
解决办法
627
查看次数

基于Windows Azure CPU时间缩放?

Microsoft Azure的Web站点将其CPU消耗报告为CPU时间,并以毫秒为单位进行测量.我知道这是运行代码所花费的时间,但它无助于做出扩展决策.我们正在制定"标准"计划,该计划为我们提供了整个虚拟机(无共享).

另一方面,Azure云服务将其CPU消耗报告为"CPU%",它可以清楚地传达总容量和当前消耗以轻松扩展(例如:超过80%=>向上扩展.低于15%=>向下扩展)

所以问题是,考虑到像CPU时间这样没有衡量容量的滑动措施,你如何确定扩大/缩小天蓝网站决策的剩余容量是多少?

scalability azure azure-web-sites

3
推荐指数
1
解决办法
1421
查看次数

Javascript等价于反向正常函数?例如Excel的NORMSINV()或NORMINV()?

我正在尝试将我的excel电子表格中的内容转换为Javascript,并在我的电子表格中出现了NORMSINV()宏.

NormSInv()很好地记录在http://office.microsoft.com/en-us/excel-help/normsinv-HP005209195.aspx上.基本上它的形式为Z = NormSInv(概率),如果给它概率(比如说0.90),它会给出标准正态分布的Z值(Z = 1.33).

我可以根据http://en.wikipedia.org/wiki/Standard_normal_table对整个转换表进行编码,但是要避免重新发明轮子.

那么,Javascript中是否有这样的功能?例如.在Javascript的数学库中(如果有这样的东西!).

谢谢Sid

javascript math statistics normal-distribution

2
推荐指数
2
解决办法
5951
查看次数

Azure的DiagnosticMonitorConfiguration的生命周期是多少?

在我试图清除的过程中,DiagnosticMonitorConfiguration我尝试了以下方法:

  • power(循环)(仅)webrole实例
  • 重新启动IIS应用程序池(通过RDP => IIS管理器)
  • 重新部署了Web角色
  • 修改了global.asax code => redeploy

但我仍然DirectoryConfiguration在DiagnosticMonitorConfiguration的目录数据源中看到额外的成员副本.Application_Start()每当IIS线程退役(空闲时间为20分钟)时调用global.asax时,会意外添加这些额外的副本.我已经复制粘贴了BUGGY代码,显示了它们的添加方式(最终我得到了一个例外OverallQuotaInMB is 150MB but sum of requested sub-quotas is 850MB).

问题:我理解为什么会有重复.但是,尽管尝试了上述项目符号列表中的操作,为什么DiagnosticMonitorConfiguration不会被清除?究竟是什么状态被坚持下去?我只能认为它必须是Azure表或Azure SQL - 但这只是猜测.

// called from global.asax's Application_Start()
    public bool Initialize()
    {

        RoleInstanceDiagnosticManager roleInstanceDiagnosticManager = getRoleInstanceDiagnosticManager();
        config = roleInstanceDiagnosticManager.GetCurrentConfiguration();

        if (config == null) 
            config = DiagnosticMonitor.GetDefaultInitialConfiguration();


        LocalResource localResource = RoleEnvironment.GetLocalResource("MyAppLogFolder");
        DirectoryConfiguration dirConfig = new DirectoryConfiguration();
        dirConfig.Container = "myapplog-blob";
        dirConfig.DirectoryQuotaInMB = localResource.MaximumSizeInMegabytes;
        dirConfig.Path = localResource.RootPath;

        // This is a BUG, keeps …
Run Code Online (Sandbox Code Playgroud)

azure azure-diagnostics

2
推荐指数
1
解决办法
620
查看次数

用C#MemoryStream创建一个'ChaosStream'来读取随机长度的数据?

测试评估显示MemoryStream总是返回"平滑"结果.即如果我们从MemoryStream400字节工作缓冲区中读取200个字节,它总是在一次调用中返回恰好200个字节.如果我们将4000字节读入200字节的工作缓冲区,那么它总是正好20次迭代,每次完全200字节.

问题是MemoryStreamcan(在现实世界中,角落情况)代表慢流源(如网络或文件).因此,读取可能不那么确定.每个Read操作可能会返回读取的非确定性字节(例如:8,1,105,20,5,80 ......)

那么,将一个香草MemoryStream转变为(因为缺少一个更好的词)是一个很好的方法,ChaosStream其中读取的字节数是1和读取请求之间的随机数count?(注意,0表示流结束).字节本身需要是底层字节,只需读取一些随机性/抖动即可扩展测试覆盖范围.

c# stream

2
推荐指数
1
解决办法
859
查看次数

在c#中创建加密随机数的最快,线程安全的方法?

注意到在多线程上并行生成随机数时,加密随机数生成器不是线程安全的.使用的生成器RNGCryptoServiceProvider似乎重复了很长的随机位(128位).重现此代码的代码如下所示.

如果没有使用锁来保护对RNGCryptoServiceProvider实例的访问(这会杀死整个速度点),有没有人有更快的方法来生成加密随机数?

using System;
using System.Runtime.Caching;
using System.Security.Cryptography;
using System.Threading.Tasks;

namespace ParallelRandomness
{
    class Program
    {
        static void Main(string[] args)
        {
            var test = new Test();
            Console.Write("Serialized verion running ...  ");
            test.Run(false);
            Console.WriteLine();
            Console.Write("Parallelized verion running ...  ");
            test.Run(true);
            Console.WriteLine(Environment.NewLine + "Done.");
            Console.ReadLine();
        }
    }

    class Test
    {
        private readonly RNGCryptoServiceProvider _rng = new RNGCryptoServiceProvider();
        private readonly byte[] _randomBytes = new byte[128 / 8];
        private int collisionCount = 0;
        private readonly object collisionCountLock  = new object(); …
Run Code Online (Sandbox Code Playgroud)

c# random parallel-processing multithreading cryptography

2
推荐指数
1
解决办法
928
查看次数

Unity没有解决MVC3控制器构造函数中的依赖关系

我们有一个MVC3控制器,其中有一些"常见"工作,我们已经进入控制器构造函数.一些常见的工作是由一个失败耦合的类(比如说ourService)通过Unity动态解决(对于IoC /依赖注入).ourService在Controller的构造函数中为null(即未解析)但它在通常的Controller方法中正确解析.下面的简单演示代码显示了问题:

public class Testing123Controller : BaseController
{
    [Dependency]
    public IOurService ourService { get; set; }

    public Testing123Controller()
    {
            ourService.SomeWork(1); // ourService=null here !!
            ...
    }

    public ActionResult Index()
    {
            ourService.SomeWork(1); // resolved properly here here !!
            ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 为什么Unity解析行为有这种不同?我期待一致的行为.
  2. 我如何修复它,以便Unity即使在控制器的构造函数中也能解决这个问题?

我们设置Unity 2.0的方式是:

Global.asax中

Application_Start()
{
    ...
    Container = new UnityContainer();
    UnityBootstrapper.ConfigureContainer(Container);
    DependencyResolver.SetResolver(new UnityDependencyResolver(Container));
    ...
}

public static void ConfigureContainer(UnityContainer container)
{
    ...
    container.RegisterType<IOurService, OurService>();
    ...
}
Run Code Online (Sandbox Code Playgroud)

IOurService.cs

public interface IOurService
{ …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc dependency-injection unity-container

1
推荐指数
1
解决办法
2391
查看次数

将字典序列化到磁盘?

我们有一个Hashtable(特别是C#Dictionary类),它可以保存数千/数百万(Key,Value)对,用于近O(1)搜索命中/未命中.

我们希望能够将此数据结构刷新到磁盘(序列化)并稍后再次加载(反序列化),以便保留Dictionary的内部哈希表.

我们现在做的是:

  1. 从磁盘加载=> List<KVEntity>.(KVEntity可序列化.我们使用Avro进行序列化 - 如果需要可以删除Avro)
  2. KVEntity从array =>字典中读取每一个.这将重新生成字典/散列表内部状态.
  3. <系统运行,字典可以增长/缩小/改变值等>
  4. 保存时,从字典读入数组(通过myKVDict.Values.SelectMany(x => x)新的List<KVEntity>)
  5. 我们将array(List<KVEntity>)序列化为磁盘以保存原始数据

请注意,在我们的保存/恢复期间,我们会丢失内部tashtable /字典状态,并且每次都必须重建它.

我们想直接序列化到/来自Dictionary(包括它的内部"实时"状态),而不是仅仅为磁盘i/o使用中间数组.我们怎么做?

一些伪代码:

// The actual "node" that has information. Both myKey and myValue have actual data work storing
public class KVEntity
{
    public string myKey {get;set;}
    public DataClass myValue {get;set;}
}

// unit of disk IO/serialization
public List<KVEntity> myKVList {get;set;} 

// unit of run time processing. The string key is …
Run Code Online (Sandbox Code Playgroud)

c# serialization dictionary

1
推荐指数
1
解决办法
3755
查看次数