首页 > 解决方案 > 凯撒密码python错误

问题描述

我是密码学的新手,所以我尝试用 python 制作一个简单的凯撒密码程序,但它一直只返回一个字母。有人可以帮忙吗?这是我的代码:

def main():

    text = raw_input('input plainteks:')
    key  = int(raw_input('input key:'))

    print("plain teks :"+text)
    print("key :" +str(key))
    print("hasil cipher:", encrypt(text,key))

def encrypt(text,key):

    hasil = ''

    for i in range(len(text)): #
        char = text[i]

    if (char.isupper()):
        hasil += chr((ord(char) + key-65)%26 + 65)
    else:
        hasil += chr((ord(char) + key-97)%26 + 97)
    return hasil

当我尝试运行它时:

input plainteks:melody  
input key:3 
plain teks :melody
key :3
hasil cipher: b

标签: pythonsyntax-errorcaesar-cipher

解决方案


if不在循环中。以下代码有效:

def main():

    text = raw_input('input plainteks:')
    key  = int(raw_input('input key:'))

    print("plain teks: "+text)
    print("key: " +str(key))
    print("hasil cipher: "+encrypt(text,key))

def encrypt(text,key):
    hasil = ''
    for i in range(len(text)): #
        char = text[i]
        if (char.isupper()):
            hasil += chr((ord(char) + key-65)%26 + 65)
        else:
            hasil += chr((ord(char) + key-97)%26 + 97)
    return hasil

main()

您也可以使用该secretpy模块

from secretpy import Caesar

text = 'melody'
key = 3
print(text)
cipher = Caesar()
enc = cipher.encrypt(text, key)
print(enc)

推荐阅读