python - 凯撒密码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
解决方案
你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)
推荐阅读
- python - 如何在python中制作一个正确的名称输入程序
- docusignapi - DocuSignAPI nuget c# REST 包:将新文档添加到现有信封时未添加 UpdateRecipients 和 UpdateDocuments 选项卡
- angularjs - 如何在 OrderBy angularjs 中设置优先级
- llvm - 加载大型数组时“LLVMSymbolizer:读取文件时出错:没有这样的文件或目录”
- java - 为什么 app.yaml 中的“线程安全:是”在 Google App Engine 的柔性环境中不起作用?
- unity3d - 无法再设置粒子“能量”
- java - 使用 Spring Security 在 JavaFX 中基于角色的内容
- instagram - Instagram 访问令牌多久过期一次?
- sonarqube - 无法以管理员/管理员身份登录 sonarqube?
- python - SSL:TLSV1_ALERT_PROTOCOL_VERSION