2、设计一款伪随机函数(LCC伪随机数生成,请参看附件中文件randUx.m),将LSB算法与伪随机函数结合,信息隐藏的位由伪随机函数确定,实现信息隐藏的随机性,从而提高隐藏算法的抗攻击性;
时间: 2023-05-27 21:05:35 浏览: 94
中移4G Cat.1模组 ML302_硬件设计手册_V1.0.0.pdf
设计思路:
1. 伪随机函数的选择:LCC伪随机数生成器,该算法的优点是速度快、随机性好、周期长。
2. LSB算法的选择:将隐藏信息的二进制串插入到载体图像的像素值的最低有效位中,不影响人眼对图像的观感。
3. 将伪随机函数与LSB算法结合:伪随机函数生成一个随机序列,确定哪些像素是用来隐藏信息的,哪些是不需要修改的。在这些需要修改的像素值中,使用LSB算法将信息二进制串插入到最低有效位中。
4. 实现信息隐藏的随机性:由于伪随机函数生成的序列是随机的,每次隐藏信息的像素值都会发生改变,从而提高了信息隐藏的随机性,增强了算法的抗攻击性。
代码实现:
```matlab
function [stego_img] = lsb_rand(img, secret_msg, key)
%img:载体图像,secret_msg:待隐藏信息,key:伪随机函数种子
%stego_img:隐藏信息后的图像
%获取载体图像的大小和像素值
[row, col, channel] = size(img);
img = double(img);
%将待隐藏信息转换成二进制串
secret_msg = dec2bin(secret_msg)';
msg_len = length(secret_msg(:));
%生成伪随机数序列
rand_seq = randUx(key, row*col);
%确定哪些像素值需要修改
modify_idx = find(rand_seq(1:msg_len) > 0.5);
%将待隐藏信息插入到最低有效位中
for i = 1:length(modify_idx)
idx = modify_idx(i);
[r, c] = ind2sub([row, col], idx);
for j = 1:channel
img(r, c, j) = bitset(img(r, c, j), 1, secret_msg(i));
end
end
%将修改后的像素值组成图像
stego_img = uint8(img);
end
```
代码说明:
1. 将待隐藏信息转换成二进制串,方便后续插入到最低有效位中。
2. 生成伪随机数序列,用于确定哪些像素值需要修改。
3. 遍历需要修改的像素值,使用LSB算法将信息二进制串插入到最低有效位中。
4. 将修改后的像素值组成图像,返回隐藏信息后的图像。
总结:
伪随机函数可以增加信息隐藏算法的抗攻击性,提高信息隐藏的随机性。在实际应用中,还需要考虑到算法的安全性和可靠性,避免信息泄露和数据丢失。
阅读全文