密码学实验

这篇博客记录了作者进行的密码学实验,包括Playfire加密、Vigenere密码、ADFGX密码和RC4算法的实现,旨在梳理个人编程实践。
摘要由CSDN通过智能技术生成

密码学实验
我只是为了记录自己写过的代码,所以代码质量不高非常冗余
一、Playfire加密

b=['A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
c=[["","","","",""],["","","","",""],["","","","",""],["","","","",""],["","","","",""]]
#密钥去重
def _key(key):
    global a
    a=[]
    key=key.upper()
    for i in key:
        if i not in a and i!=" ":
            a.append(i)
    print(a)
#密钥入阵、字母入阵
def Matrix():
    x=y=0
    for i in range(5):
        j=0
        while(j<5):
            if x<len(a):
                c[i][j]=a[x]
                x+=1
                j+=1
                continue
            else:
                if b[y] not in a and y<len(b):
                    c[i][j]=b[y]
                    y+=1
                    j+=1
                    continue
                else:
                    y+=1
                    j-=1
            j+=1
    print(c)
    return c
#明文处理
def E_text(text):
    for i in range(len(text)):
        if(i%2==1):
            if text[i]==text[i-1]:
                text.insert(i,'Z')
    if len(text)%2!=0:
        text+='Z' 
    #print(text)
    return text

#密文处理
def D_text(str2):
    str3=""
    for i in str2:
        if i=='Z':
            continue
        str3+=i
    return str3
            
    
#不在同一行同一列
def _index(text,n):
    for i in range(5):
        for j in range(5):
            if text[n]==c[i][j]:
                return i,j
#加密
def 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值