Hill古典密码学

 

1.实验目的:

(1)了解经典加密算法对于同学们理解现代密码学的基本思想有很大帮助。

(2)在本实验中,采用MATLAB实现hill加密

2.实验设备:

Win10系统、MATLAB软件

3.实验原理:

希尔密码(Hill Password)是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。每个字母当作26进制数字:a=0, b=1, c=2... 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果模26。

注意:用作加密的矩阵(即密匙)必须是可逆的,否则就不可能译码。只有矩阵的行列式和26互质,才是可逆的。

1)加密:密文=明文*密钥矩阵*mod26 (注:明文要被分割成与密钥维数相同的一维行列式)

2)解密:明文=密文*密钥矩阵的逆mod26 (注:要求与加密过程相同)

3.实验内容:

为了实现Hill加密,需要如下的功能模块:

1.需要一个子程序将输入的字符串转换为从0-26的数字;

2.需要编写一个实现mode26的矩阵向量乘法子程序;

注:先写出总体的代码,然后实现每一个模块。

clear all;
message_P=input('INPUT:','s');
n=length(message_P);
%%加密过程
p=char(message_P)-97;%明文字母转数字
if mod(n,3)==0
p1=p;    
else if mod(n,3)==1
     p(n+1)=25;
     p(n+2)=25;
     p1=p; 
    else
        if mod(n,3)==2
            p(n+1)=25;
            p1=p;
        else
        end
    end
end
%秘钥矩阵可更改
k=[1 2 3;1 1 2;0 1 2];%密钥
m=length(p1);
p1=reshape(p1,3,m/3);
c= mod(k*p1,26);
c1=reshape(c,1,m);
message_c=char(c1+97);
fprintf('miwen:"%s"\n',message_c);
%%解密过程
k2=inv(k);
c2=char(message_c)-97;%密文字母转数字
c2=reshape(c2,3,m/3);
message_p2= mod(k2*c2,26);
c3=reshape(message_p2,1,m);
message_p2=char(c3+97);
fprintf('jiemi:"%s"\n',message_p2);

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值