首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Caesar cipher python错误

Caesar cipher python错误
EN

Stack Overflow用户
提问于 2018-07-20 15:41:26
回答 1查看 305关注 0票数 1

我刚接触密码学,所以我试着用python做一个简单的Caesar密码程序,但它总是只返回一个字母。有谁能帮帮忙吗?下面是我的代码:

代码语言:javascript
复制
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

下面是我尝试运行它的时候:

代码语言:javascript
复制
input plainteks:melody  
input key:3 
plain teks :melody
key :3
hasil cipher: b
EN

回答 1

Stack Overflow用户

发布于 2020-07-14 02:41:26

您的if不在循环中。下面的代码可以工作:

代码语言:javascript
复制
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模块

代码语言:javascript
复制
from secretpy import Caesar

text = 'melody'
key = 3
print(text)
cipher = Caesar()
enc = cipher.encrypt(text, key)
print(enc)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51437514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档