gpt4 book ai didi

python - 替换密码 Python

转载 作者:太空宇宙 更新时间:2023-11-04 10:14:37 25 4
gpt4 key购买 nike

我必须制作一个替代密码程序,我首先创建一个随 secret 钥,然后使用这个 key 来解密/加密一些用户输入(明文)。该问题的约束条件如下:

  1. encryptMsg(明文、 key 、字母)将明文字符串、字母字符串和 key 字符串作为参数并返回加密的密码字符串。注意,在此函数中,您必须首先将明文字符串转换为所有小写并删除所有未出现在字母字符串中的标点符号/字符!

  2. 解密消息(密文、 key 、字母)将采用密文字符串、字母字符串和 key 字符串并返回明文字符串。

  3. 生成 key (字母表)通过随机打乱字母字符串中的字符来生成并返回一个 key 字符串争论。提示:这涉及使用 random.shuffle() 将字符串转换为列表方法,然后将列表转回字符串

这是我所拥有的:

import random
alphabet = "'abcdefghijklmnopqrstuvwxyz.,!'"

def makeKey(alphabet):
alphabet= list(alphabet)
key= random.shuffle(alphabet)
alphabet= str(alphabet)
return key


def encrypt(plaintext, key, alphabet):
"""Encrypt the string and return the ciphertext"""
return ''.join(key[l] for l in plaintext)
print (alphabet)

我知道我在 makeKey 函数上做错了,因为它不起作用。我需要一些关于如何启动其他功能的帮助。我们不能使用字典,只能列出方法。在我的任务中启动我的任何帮助或只是建议将不胜感激。谢谢大家!

更新:示例输出如下:

字母表:'abcdefghijklmnopqrstuvwxyz.,! '

键:'nu.t!iyvxqfl,bcjrodhkaew spzgm'

输入明文:嘿,这真有趣!

密文:'v! zmhvxdmxdmo!nll mikbg'

解密文本:“嘿,这真的很有趣!”

最佳答案

下面的原始答案:

请向我们展示一些示例输入和输出示例。根据您的代码,我可以得出以下结论 - random.shuffle 随机播放所有内容并返回 None,将您的 makeKey 更改为:

def makeKey(alphabet):
alphabet = list(alphabet)
random.shuffle(alphabet)
return ''.join(alphabet)

编辑 2:

不使用dict加密/解密的方法见下:

import random

alphabet = 'abcdefghijklmnopqrstuvwxyz.,! ' # Note the space at the end, which I kept missing.
# You could generate the key below using makeKey (i.e. key=makeKey(alphabet))
key = 'nu.t!iyvxqfl,bcjrodhkaew spzgm'
plaintext = "Hey, this is really fun!"
# v! zmhvxdmxdmo!nll mikbg


def makeKey(alphabet):
alphabet = list(alphabet)
random.shuffle(alphabet)
return ''.join(alphabet)

def encrypt(plaintext, key, alphabet):
keyIndices = [alphabet.index(k.lower()) for k in plaintext]
return ''.join(key[keyIndex] for keyIndex in keyIndices)

def decrypt(cipher, key, alphabet):
keyIndices = [key.index(k) for k in cipher]
return ''.join(alphabet[keyIndex] for keyIndex in keyIndices)

cipher = encrypt(plaintext, key, alphabet)

print(plaintext)
print(cipher)
print(decrypt(cipher, key, alphabet))

打印:

Hey, this is really fun!
v! zmhvxdmxdmo!nll mikbg
hey, this is really fun!

编辑:

经过一些间距问题和实验,我想出了这个相当简单的解决方案:

import random

alphabet = 'abcdefghijklmnopqrstuvwxyz.,! '
key = 'nu.t!iyvxqfl,bcjrodhkaew spzgm'
plaintext = "Hey, this is really fun!"


def makeKey(alphabet):
alphabet = list(alphabet)
random.shuffle(alphabet)
return ''.join(alphabet)

def encrypt(plaintext, key, alphabet):
keyMap = dict(zip(alphabet, key))
return ''.join(keyMap.get(c.lower(), c) for c in plaintext)

def decrypt(cipher, key, alphabet):
keyMap = dict(zip(key, alphabet))
return ''.join(keyMap.get(c.lower(), c) for c in cipher)

cipher = encrypt(plaintext, key, alphabet)

print(plaintext)
print(cipher)
print(decrypt(cipher, key, alphabet))

这打印:

Hey, this is really fun!
v! zmhvxdmxdmo!nll mikbg
hey, this is really fun!

关于python - 替换密码 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36188226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com