如何创建字节数组并用随机数据填充它

4

我想创建一个指定大小的字节数组,并填充随机数据。我该如何做?我的方法签名应该是这样的:

private byte[]  GetByteArray(int sizeInKb)
    {


    }

这是我尝试过的:

private  byte[]  GetByteArray(int sizeInKb)
    {

        var rnd = new Random();
        var bytes = new Byte[sizeInKb*1024];
        rnd.NextBytes(bytes);
        return bytes;
    }

我希望返回一个字节数组,其中包含与sizeInKb值对应的随机数据。当用户输入以KB为单位的值(例如10 KB)时,我的数组大小是否正确。


4
需要多么随机?你看过Random.NextBytes吗? - Jonathon Chase
2
可能是如何用垃圾填充字节数组?的重复问题(其中“随机数据”与“垃圾”不可区分)。还有许多其他相似的重复问题,尽管它们要求随机数是唯一的和/或在某个范围内。 - Lance U. Matthews
1
我很困惑为什么这个问题被定为关于创建一个由随机数组成的数组,而真正想要的信息是后来才编辑进去的,即“如何计算 KB 中的字节数”? 为什么不一开始就问那个呢?而且被接受的答案是如何回答那个问题的呢? - Lance U. Matthews
1
@Kumar,你修改问题的方式使得答案与问题完全无关(只是简单地从问题中复制粘贴代码,根本不是一个答案)。你真的不应该这样做... - Alexei Levenkov
2
我写了一个等效的示例,调用System.Security.Cryptography.RNGCryptoServiceProvider.GetBytes(byte[]),但当我想要点击“发布您的答案”按钮时,问题已经关闭了。基本上是相同的代码,但使用using (var rng = new RNGCryptoServiceProvider())块包装了对GetBytes的调用。 - Flydog57
显示剩余8条评论
1个回答

24

3
你的字节比普通字节大吗?;-) 不过说真的,注意输入是以“Kb”为单位的大小,所以你需要乘以1024,以获得具有正确字节数的数组。 - Chris
2
如果你想要具有密码强度的随机数据,请使用System.Security.Cryptography.RNGCryptoServiceProvider.GetBytes(byte[])。抱歉,我刚刚关闭了我的开发系统,所以不能编写一个示例代码。 - Flydog57
这并不以任何方式回答问题 - "当用户输入以KB为单位的值时,我的数组大小是否正确,例如10 KB"。 - Alexei Levenkov
应该使用 byte[] b = new... 而不是 Byte[] b。 - Tobias
只是一点小提示。由于Random在此函数内被实例化,因此该函数的输出将始终针对特定大小相同。为了使其不可预测,应该在此函数之外实例化Random对象。 - Florin Mircea
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接