Random 32位随机映射函数

Random 32位随机映射函数,random,cryptography,Random,Cryptography,我正在寻找一个函数f,它将一个32位整数映射成另一个。函数应该是双射函数,虽然映射看起来应该是近似随机的,但它不需要加密安全。还有一个重要的额外要求:还应该有一个易于计算的函数g,它与f相反。g可以与f相同,但不是必需的。考虑到非加密要求,有许多选项,包括: 异或(伊利亚提到) 位旋转(f:向右旋转N位,g:向左旋转N位) 加法/减法(无溢出检查,因此int.MaxValue+1映射到int.MinValue,int.MinValue-1映射到int.MaxValue) A(很好的呼叫@Tho

我正在寻找一个函数
f
,它将一个32位整数映射成另一个。函数应该是双射函数,虽然映射看起来应该是近似随机的,但它不需要加密安全。还有一个重要的额外要求:还应该有一个易于计算的函数
g
,它与
f
相反。
g
可以与
f
相同,但不是必需的。

考虑到非加密要求,有许多选项,包括:

  • 异或(伊利亚提到)
  • 位旋转(f:向右旋转N位,g:向左旋转N位)
  • 加法/减法(无溢出检查,因此int.MaxValue+1映射到int.MinValue,int.MinValue-1映射到int.MaxValue)
  • A(很好的呼叫@Thomas,我专注于简单的呼叫:-)

考虑到非加密要求,有许多选项,包括:

  • 异或(伊利亚提到)
  • 位旋转(f:向右旋转N位,g:向左旋转N位)
  • 加法/减法(无溢出检查,因此int.MaxValue+1映射到int.MinValue,int.MinValue-1映射到int.MaxValue)
  • A(很好的呼叫@Thomas,我专注于简单的呼叫:-)

考虑到非加密要求,有许多选项,包括:

  • 异或(伊利亚提到)
  • 位旋转(f:向右旋转N位,g:向左旋转N位)
  • 加法/减法(无溢出检查,因此int.MaxValue+1映射到int.MinValue,int.MinValue-1映射到int.MaxValue)
  • A(很好的呼叫@Thomas,我专注于简单的呼叫:-)

考虑到非加密要求,有许多选项,包括:

  • 异或(伊利亚提到)
  • 位旋转(f:向右旋转N位,g:向左旋转N位)
  • 加法/减法(无溢出检查,因此int.MaxValue+1映射到int.MinValue,int.MinValue-1映射到int.MaxValue)
  • A(很好的呼叫@Thomas,我专注于简单的呼叫:-)


与此同时,我找到了解决问题的理想方法:使用线性同余生成器。它们很容易可逆,而且排列看起来足够随机,满足我的需要。

与此同时,我找到了解决问题的理想方法:使用线性同余生成器。它们很容易可逆,而且排列看起来足够随机,满足我的需要。

与此同时,我找到了解决问题的理想方法:使用线性同余生成器。它们很容易可逆,而且排列看起来足够随机,满足我的需要。

与此同时,我找到了解决问题的理想方法:使用线性同余生成器。它们很容易可逆,并且排列看起来足够随机以满足我的需要。

不确定它是否适合这样的问题,但尝试xorEven如果它不需要加密安全,使用32位分组密码有什么问题吗?类似于(当然不是加密安全的!)不确定它是否适合这样的问题,但尝试xorEven如果它不需要加密安全,那么使用32位分组密码有什么问题吗?比如(当然不是加密安全的!)不确定它是否适合这样的问题,但如果xorEven不需要加密安全,请尝试xorEven,使用32位分组密码有什么问题吗?比如(当然不是加密安全的!)不确定它是否适合这样的问题,但如果xorEven不需要加密安全,请尝试xorEven,使用32位分组密码有什么问题吗?比如(当然,这在密码学上是不安全的!)几乎没有32位分组密码。一种是Skip32Simon和Speck分组密码也有32位的变体,32位分组密码非常少。一种是Skip32Simon和Speck分组密码也有32位的变体,32位分组密码非常少。一种是Skip32Simon和Speck分组密码也有32位的变体,32位分组密码非常少。一种是Skip32Simon和Spick分组密码也有32位的变体。