Python 시 프 트 암호,복사 변환 복호화 인 스 턴 스 코드

머리말
이 코드 는 아주 오래 전에 구체 적 인 사 고 를 잊 어 버 렸 습 니 다.이 글 과 결합 하여 두 가지 암호 화 방식 의 내용 을 알 수 있 습 니 다.
앞의 두 단 계 는 암호 화 방식 에 대응 하 는 함수 이 고 세 번 째 단 계 는 통합 이다.
비밀번호

def yiwei(string,number):
    '''
             ,         ,          
     :A     3 ,    D
    string    ,number   
    A ASCII  65
    '''
    new_string = ""
    string = string.upper()  #     
    for i in string:        #    
        #   ascii  ,        ascii,      
        new_string += chr((ord(i)-65+number)%26+65) 
    return new_string
##print(yiwei('AAA',3)) #       

def yiwei_decode(c):
    '''      ,        '''
    for i in range(1,27): #      ,    [1,26]
        print(yiwei(c,i))
    print("    ")
##yiwei_decode("A") #       
2.모방 변환

def fangshe_key(m,c):
    '''
               ,        
    m   ,c   
    [A-Z]      [0-25]
    '''
    #  
    m = m.upper()
    c = c.upper()
    #  
    m1 = m[:1:]     #        
    m2 = m[-1::]    #         
    c1 = c[:1:]     #        
    c2 = c[-1::]    #         
##    print(m1,m2)
##    print(c1,c2)
    #     
    m1 = ord(m1)-65
    m2 = ord(m2)-65
    c1 = ord(c1)-65
    c2 = ord(c2)-65
##    print(m1,m2)
##    print(c1,c2)
    #   
    for i in range(0,26):
        for j in range(0,26):
            if (m1*i+j)%26==c1 and (m2*i+j)%26==c2: #         
                return i,j
    return False
##print(fangshe_key("IF","ED")) #       

def fangshe_reverse(x,y):
    '''
          ,  x^-1(%y)     ,      
    '''
    i = 0
    while True:
        if x*i%26==1: #         
            return i
        i += 1
##print(fangshe_reverse(9,26)) #       

def fangshe_decode(c,a,b):
    '''
          ,        
    c   ,a b   
    0<=a,b<=25,   gcd(a,26)=1,a^-1  a   
        :c = a*m + b%26
        :m = (a^-1)*(c-b)%26
    '''
    new_string = ''
    c = c.upper() #    
    for i in c: #      
        new_i = ord(i)-65 #     
        new_i = (fangshe_reverse(a,26)*(new_i - b))%26 #  
        new_string += chr(new_i + 65) #       
    print(new_string)
    print("    ")
##fangshe_decode("ED",9,10) #       
3.모든 코드
자리 옮 김 암호
在这里插入图片描述
복사 변환
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# coding=utf-8
#   :   FM
#   :    
def menu():
    '''
        
    '''
    print("-----------------------")
    print("|    0.             |")
    print("|    1.         |")
    print("|    2.         |")
    print("-----------------------")
##menu() #    

def yiwei(string,number):
    '''
             ,         ,          
     :A     3 ,    D
    string    ,number   
    A ASCII  65
    '''
    new_string = ""
    string = string.upper()  #     
    for i in string:        #    
        #   ascii  ,        ascii,      
        new_string += chr((ord(i)-65+number)%26+65) 
    return new_string
##print(yiwei('AAA',3)) #       

def yiwei_decode(c):
    '''      ,        '''
    for i in range(1,27): #      ,    [1,26]
        print(yiwei(c,i))
    print("    ")
##yiwei_decode("A") #       

def fangshe_key(m,c):
    '''
               ,        
    m   ,c   
    [A-Z]      [0-25]
    '''
    #  
    m = m.upper()
    c = c.upper()
    #  
    m1 = m[:1:]     #        
    m2 = m[-1::]    #         
    c1 = c[:1:]     #        
    c2 = c[-1::]    #         
##    print(m1,m2)
##    print(c1,c2)
    #     
    m1 = ord(m1)-65
    m2 = ord(m2)-65
    c1 = ord(c1)-65
    c2 = ord(c2)-65
##    print(m1,m2)
##    print(c1,c2)
    #   
    for i in range(0,26):
        for j in range(0,26):
            if (m1*i+j)%26==c1 and (m2*i+j)%26==c2: #         
                return i,j
    return False
##print(fangshe_key("IF","ED")) #       

def fangshe_reverse(x,y):
    '''
          ,  x^-1(%y)     ,      
    '''
    i = 0
    while True:
        if x*i%26==1: #         
            return i
        i += 1
##print(fangshe_reverse(9,26)) #       

def fangshe_decode(c,a,b):
    '''
          ,        
    c   ,a b   
    0<=a,b<=25,   gcd(a,26)=1,a^-1  a   
        :c = a*m + b%26
        :m = (a^-1)*(c-b)%26
    '''
    new_string = ''
    c = c.upper() #    
    for i in c: #      
        new_i = ord(i)-65 #     
        new_i = (fangshe_reverse(a,26)*(new_i - b))%26 #  
        new_string += chr(new_i + 65) #       
    print(new_string)
    print("    ")
##fangshe_decode("ED",9,10) #       
    

if __name__=='__main__':
    while True:
        menu()
        choose = int(input("   : "))
        if choose==1:   
            string = input("     : ")
            yiwei_decode(string)
        elif choose==2:            
            string = input("     : ")
            m = input("    :")
            c = input("    :")
            a,b = fangshe_key(m,c)
            fangshe_decode(string,a,b)
        else:
            break


총결산
파 이 썬 시 프 트 비밀번호,시 뮬 레이 션 복호화 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 시 프 트 비밀번호 시 뮬 레이 션 변환 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기