Hill加密算法(matlab 实现)

一、主要函数解析

1、function [ret] = Hill(M,Str)
M为密钥矩阵
Str为待转换数组

二、注意事项

1、Hill函数的功能仅为转换数组,而不区分加密或解密;当M为密钥矩阵时,Hill输出密文;当M为密钥矩阵的逆时,Hill输出明文
2、该算法中矩阵的逆定义不同于常规定义

三、演示图

四、问题

1、当前仅实现明密文转换,密钥矩阵及其逆矩阵的生成尚未实现
ps:此处提供一密钥矩阵及其逆矩阵供参考
%M: [17 17 5;21 18 21;2 2 19]
%M^-1:[4 9 15;15 17 6;24 0 17]

五、代码

function [ret] = Hill(M,Str)
temp=size(M);
m=temp(1);
S_len=size(Str);
SM_len=round(S_len(2)/m)+(mod(S_len(2),m)>0);
Str_Matrix=zeros(SM_len,m);
for i=1:S_len(2)
    Str_Matrix((fix(i/m)+~(mod(i,m)==0)),((mod(i,m)==0)*(m)+(~(mod(i,m)==0))*(mod(i,m))))=Str(i);
end
%i,m
%mod(i,m)
%row:(fix(i/m)+~(mod(i,m)==0))
%line:((mod(i,m)==0)*(m)+(~(mod(i,m)==0))*(mod(i,m)))


T=mod(Str_Matrix*M,26);
ret=zeros(1,SM_len*m);
for i=1:SM_len
    ret(1,((i-1)*m+1):i*m)=T(i,:);
end
end
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值