clc;
clear;
close all;
% 从文件加载图像 'Lena.tiff' 到变量 X 中
X=imread('Lena.tiff');
if size(X,3)>1% 检查图像是否为彩色图像,若是则将其转换为灰度图像
X=rgb2gray(X);
end
figure,imshow(X); title('Input Image');
figure,imhist(X); title('Input Image Histogram');
% x=uint8(0.*zeros(512,512));
[m,n]=size(X);
Gb=uint8([30, 14, 36, 213, 65, 49, 153, 42, 140, 13, 254, 116, 179, 201,...
185, 204, 15, 147, 210, 147, 229, 148, 117, 100, 128, 26, ...
249, 48, 63, 65, 47, 130]); %Genesis Block
% 定义 Genesis Block(创世区块),这是一个固定长度的 uint8 向量
Gb1=Gb;
sha256hasher = System.Security.Cryptography.SHA256Managed;
y=uint8(zeros(m,n));
k=1;
% 打乱阶段
% 生成随机排列索引
sh=rand(1,512*512);
[t, Ind]=sort(sh);
% 对图像数据进行打乱操作
x1 = X(:); % 将图像展平
x2 = x1(Ind); % 根据随机索引重排图像数据
x = reshape(x2, 512, 512); % 将打乱后的数据重塑为图像
figure,imshow(x); title('打乱后的图像');
figure,imhist(x); title('打乱后图像的直方图');
% 加密过程
for i=1:m
for j=1:32:n
% 提取图像子块
temp=x(i,j:j+31);
% 使用 Genesis Block 与图像子块进行异或操作
y(i,j:j+31)=bitxor(Gb(k,:),x(i,j:j+31));
% 计算加密后的子块的 SHA256 哈希值作为新的 Genesis Block
Gb(k+1,:) = uint8(sha256hasher.ComputeHash(y(i,j:j+31)));k=k+1;
end
end
% 显示加密后的图像及直方图,并分别附上标题
figure,imshow(y); title('加密图像');
figure,imhist(y); title('加密图像直方图');
% 解密过程(注:该部分代码未启用计时功能)
Gb1(1)=Gb(1)+10;
y(1,1)=y(1,1)+7;% 对加密图像的某个位置进行修改
z=uint8(zeros(m,n));% 初始化解密后的图像矩阵 z 为与原图像相同尺寸的全零矩阵
k=1;
for i=1:m
for j=1:32:n
% 使用 Genesis Block 与加密子块进行异或操作以解密
Gb1(k+1,:) = uint8(sha256hasher.ComputeHash(y(i,j:j+31)));
z(i,j:j+31)=bitxor(Gb1(k,:),y(i,j:j+31));k=k+1;
end
end
% toc
figure,imshow(z); title('基于区块链解密后的图像');
figure,imhist(z); title('基于区块链解密后图像的直方图');
z1=z(:);
z2(Ind)=z1;
Z=reshape(z2,m,n);
isequal(X,Z)
figure,imshow(Z); title('解密后的图像');
figure,imhist(Z); title('解密后图像的直方图');
fpga和matlab
- 粉丝: 17w+
- 资源: 2626
最新资源
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
- Constantsfd密钥和权限集合.kt
- 基于Java的财务报销管理系统后端开发源码
- 基于Python核心技术的cola项目设计源码介绍
- 基于Python及多语言集成的TSDT软件过程改进设计源码
- 基于Java语言的歌唱比赛评分系统设计源码
- 基于JavaEE技术的课程项目答辩源码设计——杨晔萌、李知林、岳圣杰、张俊范小组作品
- 基于Java原生安卓开发的蔚蓝档案娱乐应用设计源码
- 基于Java、Vue、JavaScript、CSS、HTML的毕设设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈