Vinegere Cypher,Python。特殊字符和白色空间的索引问题。有什么建议吗?

发布于 2025-01-28 14:20:24 字数 1255 浏览 2 评论 0原文

因此,我一直在研究这种格格内尔解密。我设法获得了输出,但是由于特殊字符和白色空间被抛弃的索引,输出是错误的。我想知道是否有人建议将加密密钥与秘密信息保持一致,因为它通过索引迭代。

import string

keys = list(string.ascii_lowercase)
def decoder(coded_message, offset):
    
    real_message = []
    real_index = 0
    real_letter = []
    new_index = 0
    index = 0

    for i in range(0, len(coded_message)):
        if coded_message[i].isalpha() != True:
            real_letter.append(coded_message[i])
        else:
            new_index = offset_key(offset, i)
            index = keys.index(coded_message[i])
            real_index = (index - new_index) % 26
            real_letter.append(keys[real_index])
            real_message = "".join(real_letter)

    return(real_message)

keyword = "friends"
fourth_message = "dfc aruw fsti gr vjtwhr wznj? vmph otis! cbx swv jipreneo uhllj kpi rahjib eg fjdkwkedhmp!"

def offset_finder(keyword):
    offset_list = []
    for letter in keyword:
        offset_list.append(keys.index(letter))
    return offset_list

new_offset = offset_finder(keyword)
print(new_offset)

def offset_key(new_offset, index):
    index = (index % 7)
    offset = new_offset[index]
    return offset


f_decoded_message = decoder(fourth_message, new_offset)
print(f_decoded_message)

So I been working on this Vigenere decryption. I managed to get an output, but the output is wrong due to the index being thrown off by special characters and white spaces. I was wondering if anyone had any suggesting in keep the encryption key aligned with the secret message as it iterates through the index.

import string

keys = list(string.ascii_lowercase)
def decoder(coded_message, offset):
    
    real_message = []
    real_index = 0
    real_letter = []
    new_index = 0
    index = 0

    for i in range(0, len(coded_message)):
        if coded_message[i].isalpha() != True:
            real_letter.append(coded_message[i])
        else:
            new_index = offset_key(offset, i)
            index = keys.index(coded_message[i])
            real_index = (index - new_index) % 26
            real_letter.append(keys[real_index])
            real_message = "".join(real_letter)

    return(real_message)

keyword = "friends"
fourth_message = "dfc aruw fsti gr vjtwhr wznj? vmph otis! cbx swv jipreneo uhllj kpi rahjib eg fjdkwkedhmp!"

def offset_finder(keyword):
    offset_list = []
    for letter in keyword:
        offset_list.append(keys.index(letter))
    return offset_list

new_offset = offset_finder(keyword)
print(new_offset)

def offset_key(new_offset, index):
    index = (index % 7)
    offset = new_offset[index]
    return offset


f_decoded_message = decoder(fourth_message, new_offset)
print(f_decoded_message)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

要走就滚别墨迹 2025-02-04 14:20:24
fourth_message = "dfc aruw fsti gr vjtwhr wznj? vmph otis! cbx swv jipreneo uhllj kpi rahjib eg fjdkwkedhmp!"
clean_message = []
decoded_fourth_message = []
pract_message = []
stripped_message = []
inserted_message = []



def offset_finder(keyword):
    offset_list = []
    for letter in keyword:
        offset_list.append(keys.index(letter))
    return offset_list

new_offset = offset_finder(keyword)
print(new_offset)

def offset_key(new_offset, index):
    index = (index % 7)
    offset = new_offset[index]
    return offset

def cleaner(coded_message):
    punct = []
    no_space = []
    punct_index = []
    new_space =[]
    g = 0
    j = 0
    for i in range(len(coded_message)):
        no_space += coded_message[i]
        
        if coded_message[i].isalpha() != True or coded_message[i] == " ":
            punct_index.append(i)
            punct.append(coded_message[i])
            j -= 1
            del no_space[j]
            
        else:
            continue
        j+= 1
        
    return no_space
        

        
def V_decoder(coded_message, offset):
    real_message = []
    real_index = 0
    real_letter = []
    new_index = 0
    index = 0
  
    
    for i in range(0, len(coded_message)):
        #if coded_message[i].isalpha() != True:
            #real_letter.append(coded_message[i])
            
            new_index = offset_key(offset, i)
            index = keys.index(coded_message[i])
            real_index = (index - new_index) % 26
            real_letter.append(keys[real_index])
            #real_message = "".join(real_letter)

    return(real_message)




clean_message = cleaner(fourth_message)
#print(clean_message)
stripped_message = decoder(clean_message, new_offset)
changing_message = []



def inserter(fourth_message, stripped_message):
    join_message= []
    punct = []
    punct_index = []
    j = 0
    index = 0
    s = 0
    decoded_v =[]
    for i in range(len(fourth_message)):
        index += 1
        if fourth_message[i].isalpha() != True or fourth_message[i] == " ":
            punct_index.append(i)
            punct.append(fourth_message[i])
            
        else:
            continue
            
    print(punct)
    print(punct_index)
    
    for i in range(len(fourth_message)):
        if i == punct_index[j]:
            join_message.insert(i, punct[j])
            j+=1
        else:
            join_message.append(stripped_message[s])
            s += 1
            
        decoded_v ="".join(join_message)
        
    #print(punct_index)
    #print(punct)
    #print(index)
    return(decoded_v)

pract_message = inserter(fourth_message, stripped_message)
print(pract_message)  


fourth_message = "dfc aruw fsti gr vjtwhr wznj? vmph otis! cbx swv jipreneo uhllj kpi rahjib eg fjdkwkedhmp!"
clean_message = []
decoded_fourth_message = []
pract_message = []
stripped_message = []
inserted_message = []



def offset_finder(keyword):
    offset_list = []
    for letter in keyword:
        offset_list.append(keys.index(letter))
    return offset_list

new_offset = offset_finder(keyword)
print(new_offset)

def offset_key(new_offset, index):
    index = (index % 7)
    offset = new_offset[index]
    return offset

def cleaner(coded_message):
    punct = []
    no_space = []
    punct_index = []
    new_space =[]
    g = 0
    j = 0
    for i in range(len(coded_message)):
        no_space += coded_message[i]
        
        if coded_message[i].isalpha() != True or coded_message[i] == " ":
            punct_index.append(i)
            punct.append(coded_message[i])
            j -= 1
            del no_space[j]
            
        else:
            continue
        j+= 1
        
    return no_space
        

        
def V_decoder(coded_message, offset):
    real_message = []
    real_index = 0
    real_letter = []
    new_index = 0
    index = 0
  
    
    for i in range(0, len(coded_message)):
        #if coded_message[i].isalpha() != True:
            #real_letter.append(coded_message[i])
            
            new_index = offset_key(offset, i)
            index = keys.index(coded_message[i])
            real_index = (index - new_index) % 26
            real_letter.append(keys[real_index])
            #real_message = "".join(real_letter)

    return(real_message)




clean_message = cleaner(fourth_message)
#print(clean_message)
stripped_message = decoder(clean_message, new_offset)
changing_message = []



def inserter(fourth_message, stripped_message):
    join_message= []
    punct = []
    punct_index = []
    j = 0
    index = 0
    s = 0
    decoded_v =[]
    for i in range(len(fourth_message)):
        index += 1
        if fourth_message[i].isalpha() != True or fourth_message[i] == " ":
            punct_index.append(i)
            punct.append(fourth_message[i])
            
        else:
            continue
            
    print(punct)
    print(punct_index)
    
    for i in range(len(fourth_message)):
        if i == punct_index[j]:
            join_message.insert(i, punct[j])
            j+=1
        else:
            join_message.append(stripped_message[s])
            s += 1
            
        decoded_v ="".join(join_message)
        
    #print(punct_index)
    #print(punct)
    #print(index)
    return(decoded_v)

pract_message = inserter(fourth_message, stripped_message)
print(pract_message)  


~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文