我有一个相当大的整数数组。我需要使用密钥完全打乱数组。我应该能够使用相同的密钥获取原始数组。我搜索了任何洗牌算法,但我发现像 Fisher Yates 这样的算法不使用密钥。
整数数组是图像的像素值。我需要将数据隐藏在其中。所以在打乱数组后隐藏数据只能通过拥有密钥来访问。
整数数组是图像的像素值。我需要将数据隐藏在其中。所以在打乱数组后隐藏数据只能通过拥有密钥来访问。
Fisher-Yates算法使用伪随机数生成器,您可以使用密钥进行种子化(查找加密PRNGs)。要反转该过程,请使用相同的密钥对索引数组[0,n)进行洗牌,然后执行反向洗牌。
j = (j + key[i % key.length]) % data.length;
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}` 它可以打乱数组,但无法恢复原始顺序。
- Amar C