c# - 生成随机位序列

标签 c# java c++ c random

我正在尝试生成一个包含给定长度的绝对随 secret 钥的文件,比方说 100 位并将它们存储在一个文件中。最好的方法是什么?哪种语言提供了最好的库?提前致谢。

最佳答案

随机性有不同程度的“强度”;您可以获得真正 随机位,或 随机位。真正随机的位从真实世界的来源中获得它们的熵。 随机位产生一个看似随机但实际上可预测的位序列。

在生成 key 时,您应该始终使用指定为具有加密强度 的随机生成器。这些随机位生成器经过精心设计,真正不可预测。切勿使用较弱的随机源来生成 key 。

在 C# 中,您可以通过创建一个恰当命名的 random number generator cryptographic service provider 的实例来实现。然后调用GetBytes以获得所需长度的随机字节数组。

不用说:生成您自己的加密 key 时要非常小心。密码学就​​是将 key 的安全性转化为消息的安全性。如果您对如何生成、存储和传输 key 不是很小心,那么安全系统就会受到威胁。如果您自己不是密码学专家,请考虑聘请一位密码学专家,而不是尝试推出自己的加密代码。

我还注意到,根据您的应用,100 位的 key 大小可能太小,也可能太大。它可能太小,因为您的算法可能容易受到 key 大小如此小的攻击,并且它可能太大,因为某些国家/地区限制使用或导出具有太高位数的加密软件。考虑咨询律师。

关于c# - 生成随机位序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020362/

相关文章:

c# - User.Identity.Name - 哪个程序集引用将其引入您的项目?

javascript - HtmlUnit net.sourceforge.htmlunit.corejs.javascript.EcmaError : TypeError: Cannot read property "GetLoginJsonInfo" from undefined

c++ - 解析已删除的 pdf

C++ 输入困难

c++ - 多次调用构造函数会改变C++中的成员指针地址

c# 子字符串找不到字符串

c# - 维护一堆通用函数

c# - 是否有特定原因在类中不允许使用同名属性和方法,但允许将其作为扩展方法使用?

java - JTextArea 文本不可见且无滚动

java - LibGDX 如何将游戏放入表格中? *** 固定的 ***