我正在尝试生成一个包含给定长度的绝对随 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/