写一份用matlab程序进行图像的加密与解密的代码
时间: 2024-10-15 11:12:25 浏览: 31
【图像隐藏】基于Lorentz混沌彩色图像混沌加密matlab代码.zip
在MATLAB中,我们可以使用一些基本的图像处理函数来实现简单的图像加密和解密。这里是一个基于像素替换的简单位图图像的凯撒密码加密和解密示例:
```Matlab
% 加密函数
function encrypted_image = encrypt_image(plaintext_image, key)
% 将图像转换为灰度
plaintext_gray = rgb2gray(plaintext_image);
% 获取图像尺寸
[rows, cols] = size(plaintext_gray);
% 定义一个偏移量矩阵,用于移动每个像素
offset = key;
% 创建一个空矩阵保存加密后的像素值
encrypted_pixels = zeros(rows, cols);
% 遍历图像像素
for i = 1:rows
for j = 1:cols
% 加密操作:像素值加上偏移量取模256
encrypted_pixel = mod(plaintext_gray(i,j) + offset, 256);
% 保持像素值在0-255范围内
encrypted_pixels(i,j) = min(max(encrypted_pixel, 0), 255);
end
end
% 将加密后的像素值组合成图像
encrypted_image = im2uint8(encrypted_pixels);
end
% 解密函数
function decrypted_image = decrypt_image(encrypted_image, key)
% 使用相同的偏移量矩阵进行解密
decrypted_image = encrypt_image(encrypted_image, -key); % 注意这里偏移量取负是因为加减相反
end
% 示例:加载原始图像并加密、解密
original_img = imread('your_original_image.jpg'); % 替换为你的图片路径
key = 5; % 你可以选择任何整数作为偏移量
encrypted_img = encrypt_image(original_img, key);
decrypted_img = decrypt_image(encrypted_img, key);
% 显示原始、加密和解密后的图像
subplot(1, 3, 1), imshow(original_img), title('Original Image');
subplot(1, 3, 2), imshow(uint8(encrypted_img)), title('Encrypted Image');
subplot(1, 3, 3), imshow(decrypted_img), title('Decrypted Image');
阅读全文