在MATLAB中生成随机数和序列密钥

时间:2013-12-06 16:41:32

标签: matlab random key generator sequence

所以,这是交易。我有一个m * n大小的位图图像,我打算执行LSB图像隐写。我不想以循环方式将秘密信息存储在图像像素中(存储在第一像素中的第一条秘密信息,存储在第二像素中的第二条信息,等等)。我想要做的是生成一个代表像素位置的随机序列,以便秘密信息更难以检测,例如:(存储在第543像素中的第一条秘密信息,存储在第27条中的第二条信息)像素,存储在第221像素中的第三条信息,......等)。此外,我希望能够为该序列生成一种特殊的密钥或种子编号,以便我可以在接收端重新生成相同的随机序列并按顺序获取秘密信息(获取存储在第543段中的第一条秘密信息)像素,获取存储在第27个像素中的第二条信息,获得存储在第221个像素中的第三条信息,...等)。因此,如果没有该密钥,秘密信息很难提取。 我正在为一个大学项目做这个,我真的很感谢帮助人员:)。

1 个答案:

答案 0 :(得分:2)

这是一个演示:

m = 256; % height of image
n = 256; % width of image
seed_key = 123456; % secret key
img = zeros(m, n, 'uint8'); % sample greyscale image (all black)
rng(seed_key); % seed the random number generator
idxs1 = randperm(m*n); % generate a set of *linear* indices into the image
rng(seed_key); % seed the random number generator again (as a test)
idxs2 = randperm(m*n); % generate another set of *linear* indices (should match first)
all(idxs1 == idxs2) % prove that indices match