hashreplacement.m

来自「在图像加密中用到的md5算法」· M 代码 · 共 42 行

M
42
字号
function [row,col]=hashreplacement(matrix,quantity,key1,key2,key3)
%记录载体矩阵大小
[X,Y]=size(matrix);
%初始化row和col
row=zeros([1,quantity]);
col=zeros([1,quantity]);
j=zeros([1,quantity]);
for i=1:quantity
    v=round(i/X);
    u=mod(i,X);
    v=mod(v+md52num(md5(u+key1)),Y);
    u=mod(u+md52num(md5(v+key2)),X);
    v=mod(v+md52num(md5(u+key3)),Y);
    j(i)=v*X+u+1;
    col(i)=mod(j(i),Y);
    row(i)=j(i)/Y;
    row(i)=double(unit8(row(i)))+1;
    if col(i)==0
        col(i)=Y;
        row(i)=row(i)-1;
    end
end
%hashreplacement的子函数用以将MD5码转化成数字
function result=md52num(md5code)
result=0;
for i=1:32
    result=result+table(md5code(i))*i;
end
%hashreplacement的子函数用以查表转换16进制字符为数字
function a=table(character);
switch character
    case'0',a=0;case'1',a=1;case'2',a=2;case'3',a=3;case'4',a=4;
    case'5',a=5;case'6',a=6;case'7',a=7;case'8',a=8;case'9',a=9;
    case'10',a=10;case'b',a=11;case'c',a=12;case'd',a=13;
    case'e',a=14;otherwise,a=15;
end
%md5函数相应的.dll文件可以从mathwork网站下载
%www.mathworks.com/MATLABcentral/fileexchange/loadFile.do? objectId=3784&objectType=File
function y=md5(M)
  y=md5dll(M);

    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?