【问题标题】:Convert byte array to integer with lower and upper bound [closed]将字节数组转换为具有下限和上限的整数[关闭]
【发布时间】:2019-11-18 08:48:45
【问题描述】:

我有一个伪随机加密字节数组的方法。我想将加密的字节数组转换为 C# int(4 个字节),同时观察用户指定的下限和上限(例如,给我一个 1 到 10 之间的数字)

实现这一目标的最安全、最高效的方法是什么?

【问题讨论】:

  • 上限和下限是什么意思?
  • @SohaibJundi 查看编辑
  • “安全”是什么意思?此外,绝对没有办法将 4 个字节加密 到小于完整int(32 位)的范围。 (如果你想出如何实现一致且可逆的加密,可以将值映射到更小的范围......要么分享你喝的任何东西,要么收集你的数十亿)
  • @AlexeiLevenkov 我不是要求在小于“完整”整数的范围内加密 4 个字节。什么是完整的 int 呢?从某种意义上说是安全的,它不能被用来预测数值
  • 您不是在寻找new Random().Next(1,10) 吗?请edit 发布并澄清您在寻找什么(随意将“加密”上下文移动到某种扩展详细信息部分)。此外,您可能想澄清您是否希望计算这些值的某种散列......欢迎一些示例输入/输出。

标签: c# performance math random


【解决方案1】:

你可以使用System.ByteConverter.ToInt32(arr, start_index)

根据您对数组的描述,起始索引可能为零。

我不确定你所说的上限和下限是什么意思,但如果你的意思是你想要一个随机数,你可以使用各种函数来获取两个数字之间的值。如果你有半均匀分布,模函数会很好地工作。在这种情况下,您的随机数就是lowerBound + (System.ByteConverter.ToInt32(arr, start_index) % (upperBound - lowerBound))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2018-11-19
    • 1970-01-01
    相关资源
    最近更新 更多