python矩阵通信加密

        情人节快到了。怎么给暗恋的TA加密表白一下呢?

        线性代数中有一部分讲述了用矩阵运算对信息进行加密,今天实践一下。

        加密原理:给字符编码一下,这样就可以把字符串转换为向量a=(a1,a2...an)。

再搞一个密码本。随机生成一个整数矩阵B。这样加密就是一个矩阵乘法:a@B=a_encode。破译就是这个过程的逆。a = a_encode@inverse(B)。

        双方保留好密码本,然后就可以愉快的加密通信了。

        注意事项:

        密码本需要是可逆的(invertible)非奇异(nonsingular)。不然的话矩阵不能求逆。

        密码本搞大一点,边长需要大于字符串长度。设置成100×100的方阵就可以加密100个字符的信息。

        不说了,这就找女神表白去

import numpy as np

orignalmsg = 'i love you' # 要传输的信息

alphabeta = 'abcdefghijklmnopqrstuvwxyz ' # 给字符串编个码

mulu = {}

i=0
for x in alphabeta:
    mulu[x]=i
    i=i+1

#生成一个密码本矩阵
book = np.random.randint(0,200,size=(len(orignalmsg),len(orignalmsg)))

#编码 矩阵乘法

enconde = [mulu[y] for y in orignalmsg]

encoded= np.array(enconde)@book
 #译码 矩阵求逆
decode = encoded@np.linalg.inv(book)

decode=np.round(np.array(decode))

#还原信息
recmsg =[alphabeta[x] for x in np.int32(decode)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值