基于Matlab的RC4加密图像


前言

本篇文章简单记录一个我自己改写的RC4加密算法,用来加密图片


一、RC4密码介绍

RC4密码是一个简单高效的对称流密码,可以用来加密文本和图片。它的初始密钥长度可以不固定,加密和解密的过程是一样的,也就是对密文在调用一次加密算法就可以得到明文。

二、MATLAB代码

1.密钥初始化

代码如下:

function s = KSA(key)
%rc4的密钥初始化函数
[keylen, n] = size(key);
s = zeros(1,256);
for i=1:256
    s(i)=i;
end
j=1;
for i=1:256
    j=mod(j+s(i)+key(i),256);
    if j==0
        j=256;
    end
    temp=s(i);
    s(i)=s(j);
    s(j)=temp;
end

2.加(解)密算法

代码如下:

function result = RC4_img(Img,key)
%对图像进行加解密
%Lmg为带价密的图像,key为密钥
[height,weight] = size(Img);
result = zeros(height,weight);
i=1;
for row=1:height
    for col=1:weight
        i=mod(i,256);
        if i==0
            i=256;
        end
        result(row,col) =bitxor(Img(row,col),key(i));
        i=i+1;
    end
end
result = uint8(result);

3.使用实例

这里面的key读取了存储在keytxt中的固定密钥,里面可以是数字也可以是字符,长度也没有限制,但是超过256位之后是不会用到的。应该自己在本地添加一个keytxt文件,和你的Matlab文件放在一个文件夹中就行。
代码如下:

clc;clear all;
img = imread('lena.bmp');
I = rgb2gray(img);  % 灰度化
key = textread('keytxt');
s = KSA(key);
s=uint8(s);

RC4Img = RC4_img(I,s);
ReRC4Img =RC4_img(RC4Img,s);

figure
subplot(2,2,1);imshow(I);title('original image');
subplot(2,2,2);imshow(RC4Img);title('after RC4');
subplot(2,2,3);imshow(ReRC4Img);title('restore RC4');

展示加密与恢复效果

在这里插入图片描述

总结

以上就是今天要讲的内容,本文只是RC4的一种简单实现,学海无涯,代码为伴,继续加油。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值