有关ascii码的hill加解密

    hill加解密的原理实际上就是利用可逆矩阵,将明文矩阵和加密矩阵进行计算得到密文,在接收端利用密文和加密矩阵的逆进行计算再得到明文。[加密矩阵][明文矩阵]%256=[密文矩阵],[加密矩阵的逆][密文矩阵]%256=[明文矩阵]。

    本次实验是将一串明文英文字符串(可包含空格)作为输入,根据加密矩阵的阶数来构建对应的明文矩阵(明文转换为ascii码),然后与加密矩阵进行计算,对256取余再对密文进行转义输出成加密字符。解密时,先计算加密矩阵的逆,调用python的numpy包进行计算,结果输出都是小数,需要转换为分数,得到分子和分母,目的是为了方便计算小数对整数取余。

    小数对整数取余,先转换为分数。在python里面调用fractions,v = fractions.Fraction(mat[j][i]).limit_denominator()#小数转分数,v.denominator和v.numerato#分别获取分子和分母。

    假设(a/b)%256取余:(a/b)%256=x得到a(%256)=bx,继续得到bx=256k+a,即x=(256k+a)/b。把k从0开始取,直到x计算得到整数为之。35/3对256取余得到97。

实验输入和输出为:

请输入加密位数(-1结束):9
请输入明文:wo ai ni zhongguo!
明文矩阵:
[[119, 97, 110, 122, 110, 117], [111, 105, 105, 104, 103, 111], [32, 32, 32, 111, 103, 33]]
加密矩阵
[[3, 0, 0], [0, 3, 0], [0, 0, 3]]
密文矩阵
[[101 35 74 110 74 95]
 [77 59 59 56 53 77]
 [96 96 96 77 53 99]]
加密密文为: eM`#;`J;`n8MJ55_Mc
解密矩阵
[[1/3 0 0]
 [0 1/3 0]
 [0 0 1/3]]
解密密文得: wo ai ni zhongguo!

至此,加解密完成。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值