是否有一种随机化整数的方法,以便访问者无法弄清楚对象的顺序

Kar*_*rim 1 c# security random

我在网址中有一个id.通常它将是一个自动编号,所以它将是1,2,3,4,5,.....

我不希望访问者弄清楚序列,所以我想让这个数字有点随机.所以我想要1转换为174891和2到817482等等.但我希望这个范围在1到1,000,000之间.

我想通过xoring和移位整数位可以做到这一点.但我想知道这是否已在某个地方实施.

谢谢

SLa*_*aks 6

您可以将整数作为种子传递给随机数生成器.(只要确保它是独一无二的)

您还可以生成整数的SHA-512c哈希值并使用它.

但是,这里最好的做法是使用GUID而不是整数.

编辑:如果它需要是可逆的,正确的方法是使用AES或不同的加密算法加密数字.但是,这不会导致一百到一百万之间的数字.

  • 同意guid.一些站点更进一步,base64编码GUID,这导致更小和更可读的标识符. (2认同)

tva*_*son 5

不要依赖默默无闻 - 即非顺序ID - 来保证安全.构建您的应用程序,以便即使有人猜测下一个ID,它仍然是安全的.

但是,如果确实需要非顺序ID.每次随机生成一个新的id.将其作为索引(唯一)列与您的自动生成的主键ID一起存储在表中.然后,您需要做的就是查看该列以获取真实ID.