我有一个整数列表,其中顺序是必不可少的。该列表可以非常大,最多 2^24 个元素。我想以原始值及其频率保持不变的方式对其进行“加密”;本质上,就是对列表进行洗牌。我发现一种非常简单(但非常不安全!)的方法是使用 PRNG,如 Java.Random。该过程将使用发送方和接收方共享的密钥为 PRNG 播种,然后应用任何随机排序算法(例如 Fisher-Yates)。这样,知道密钥的接收器将能够“恢复”洗牌。
我知道这是一个非常糟糕的主意,但使用 SecureRandom 真的会变得更好吗?我知道它的用途适用于加密货币,但我不认为它是用来输出大量数字的。
(总的来说,我知道“从不做你自己的算法”是加密 101,但到目前为止,我还没有找到任何其他具有我想要的属性的算法,即“重新排序”但将值和频率保留在原始列表中。如果存在这样的事情,请您指出来吗?)
谢谢!:)