Python利用随机字符矩阵进行加密

要求:

先创建随机字符矩阵,后输入字符串,两两进行按矩阵对角线加密。

思路:

 

代码如下:

import random
def make():#创建矩阵
    x=list()
    x1=list()
    l=[]
    for i in range(32,127):
        l.append(chr(i))
    random.shuffle(l)#打乱ascii码
    yy=0
    for i in range(5):
        for j in range(19):
            x1.append(l[yy])#构建行
            yy+=1
            if(j==18):
                x.append(x1)#用行构建矩阵
                x1=[]#行清零
    return x

def pprint(x):#输出矩阵
    for i in range(5):
        for j in range(19):
            print(x[i][j],end=' ')
            if(j==18):
                print("\n")#到头,换行
    return 0

def ffind(x,y):#查找字符   x为矩阵,y为需查找字符
    ii=0
    jj=0
    for i in range(5):
        for j in range(19):
           if(x[i][j]==y):#查找字符
               ii=i
               jj=j#计数
               break
    return ii,jj
def jiami(x,y):#加密  x为矩阵,y为需加密字符串
    te=""
    r1=0
    c1=0
    r2=0
    c2=0
    for i in range(0,len(y),2):#成对字符加密
        r1,c1=ffind(x,y[i])#找第一位字符位置
        if(i+1<len(y)):#判断是否为奇数最后一位
            r2,c2=ffind(x,y[i+1])#找第二位字符位置
            if(r1==r2):#同行
                te+=x[r1][c2]
                te+=x[r1][c1]
            elif(c1==c2):#同列
                te+=x[r2][c1]
                te+=x[r1][c1]
            else:
                te+=x[r2][c1]
                te+=x[r1][c2]#交换
        else:#奇数最后一位
            te+=y[i]
    return te#输出加密密文
    
x=make()
pprint(x)
y=input("输入加密字符串")
yy=jiami(x,y)
print(yy)

运行测试:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值