您现在的位置:首页 >> 图像处理 >> 内容

基于DNA序列的图像加解密算法仿真

时间:2023/2/16 23:12:51 点击:

  核心提示:A371,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJWVmpdx

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

        为了解决数字图像加密算法复杂度高、安全性较差的问题,提出一种基于混沌系统的DNA融合图像加密算法。首先利用Baker变换对图像进行置乱以读取DNA序列;再由Logistic混沌映射产生混沌序列,从而对DNA序列进行混沌加密。该算法对初值具有很好的敏感性,抗统计、抗差分攻击能力强。

4.部分源码

....................................................................

if  co_dec==0

 

    t  = length(img);

    a1 = bitand(img,192)/64;

    a2 = bitand(img,48)/16;

    a3 = bitand(img,12)/4;

    a4 = bitand(img,3);

    A  =[a1,a2,a3,a4];    

    %rule_pointer

    if rule==1

        for i=1:t

            for j=1:4*t

                if  A(i,j)==0

                    dna_code(i,j)='A';

                elseif A(i,j)==1

                    dna_code(i,j)='C';

                elseif A(i,j)==2

                    dna_code(i,j)='G';

                else

                    dna_code(i,j)='T';

                end

            end

        end

    end

    if rule==2

        for i=1:t

            for j=1:4*t

                if  A(i,j)==0

                    dna_code(i,j)='A';

                elseif A(i,j)==1

                    dna_code(i,j)='G';

                elseif A(i,j)==2

                    dna_code(i,j)='C';

                else

                    dna_code(i,j)='T';

                end

            end

        end

    end

 

    if rule==3

        for i=1:t

            for j=1:4*t

                if  A(i,j)==0

                    dna_code(i,j)='T';

                elseif A(i,j)==1

                    dna_code(i,j)='C';

                elseif A(i,j)==2

                    dna_code(i,j)='G';

                else

                    dna_code(i,j)='A';

                end

            end

        end

    end

    if rule==4

        for i=1:t

            for j=1:4*t

                if  A(i,j)==0

                    dna_code(i,j)='T';

                elseif A(i,j)==1

                    dna_code(i,j)='G';

                elseif A(i,j)==2

                    dna_code(i,j)='C';

                else

                    dna_code(i,j)='A';

                end

            end

        end

    end

    if rule==5

        for i=1:t

            for j=1:4*t

                if  A(i,j)==0

                    dna_code(i,j)='G';

                elseif A(i,j)==1

                    dna_code(i,j)='A';

                elseif A(i,j)==2

                    dna_code(i,j)='T';

                else

                    dna_code(i,j)='C';

                end

            end

        end

    end

    if rule==6

        for i=1:t

            for j=1:4*t

                if  A(i,j)==0

                    dna_code(i,j)='G';

                elseif A(i,j)==1

                    dna_code(i,j)='T';

                elseif A(i,j)==2

                    dna_code(i,j)='A';

                else

                    dna_code(i,j)='C';

                end

            end

        end

    end

    if rule==7

        for i=1:t

            for j=1:4*t

                if  A(i,j)==0

                    dna_code(i,j)='C';

                elseif A(i,j)==1

                    dna_code(i,j)='A';

                elseif A(i,j)==2

                    dna_code(i,j)='T';

                else

                    dna_code(i,j)='G';

                end

            end

        end

    end

    if rule==8

        for i=1:t

            for j=1:4*t

                if  A(i,j)==0

                    dna_code(i,j)='C';

                elseif A(i,j)==1

                    dna_code(i,j)='T';

                elseif A(i,j)==2

                    dna_code(i,j)='A';

                else

                    dna_code(i,j)='G';

                end

            end

        end

    end

else

[m,n]=size(img);

if rule==1

    for i=1:m

        for j=1:n

            if img(i,j)=='A'

                A(i,j)=0;

            elseif img(i,j)=='T'

                A(i,j)=3;

            elseif img(i,j)=='G'

                A(i,j)=2;

            else

                A(i,j)=1;

            end

        end

    end

end

if rule==2

    for i=1:m

        for j=1:n

            if img(i,j)=='A'

                A(i,j)=0;

            elseif img(i,j)=='T'

                A(i,j)=3;

            elseif img(i,j)=='G'

                A(i,j)=1;

            else

                A(i,j)=2;

            end

        end

    end

end

if rule==3

    for i=1:m

        for j=1:n

            if img(i,j)=='A'

                A(i,j)=3;

            elseif img(i,j)=='T'

                A(i,j)=0;

            elseif img(i,j)=='G'

                A(i,j)=2;

            else

                A(i,j)=1;

            end

        end

    end

end

if rule==4

    for i=1:m

        for j=1:n

            if img(i,j)=='A'

                A(i,j)=3;

            elseif img(i,j)=='T'

                A(i,j)=0;

            elseif img(i,j)=='G'

                A(i,j)=1;

            else

                A(i,j)=2;

            end

        end

    end

end

if rule==5

    for i=1:m

        for j=1:n

            if img(i,j)=='A'

                A(i,j)=1;

            elseif img(i,j)=='T'

                A(i,j)=2;

            elseif img(i,j)=='G'

                A(i,j)=0;

            else

                A(i,j)=3;

            end

        end

    end

end

if rule==6

    for i=1:m

        for j=1:n

            if img(i,j)=='A'

                A(i,j)=2;

            elseif img(i,j)=='T'

                A(i,j)=1;

            elseif img(i,j)=='G'

                A(i,j)=0;

            else

                A(i,j)=3;

            end

        end

    end

end

if rule==7

    for i=1:m

        for j=1:n

            if img(i,j)=='A'

                A(i,j)=1;

            elseif img(i,j)=='T'

                A(i,j)=2;

            elseif img(i,j)=='G'

                A(i,j)=3;

            else

                A(i,j)=0;

            end

        end

    end

end

if rule==8

    for i=1:m

        for j=1:n

            if img(i,j)=='A'

                A(i,j)=2;

            elseif img(i,j)=='T'

                A(i,j)=1;

            elseif img(i,j)=='G'

                A(i,j)=3;

            else

                A(i,j)=0;

            end

        end

    end

end

A1=A(:,1:m);

A2=A(:,m+1:2*m);

A3=A(:,2*m+1:3*m);

A4=A(:,3*m+1:4*m);

dna_code=A1*64+A2*16+A3*4+A4;

end

A371

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168