python程序如何加密_如何用python编写加密程序

本文介绍了一个使用Python编写的简单加密解密程序。通过用户输入的种子对ASCII字符进行随机排列,实现加密和解密功能。文章还提到了加密方法的局限性,并建议深入研究对称密钥加密和DES等主题以提升加密安全性。
摘要由CSDN通过智能技术生成

好吧,这里有几件事。。。

首先,我会告诉你你想要什么,并解释我使用了什么,以及需要对原始代码进行的一些更改。然后,我将解释一些内在的问题,你想做什么,并建议一些领域阅读/一些方法,你可能想改善你已经拥有的。

下面是您要查找的代码(同时保留与上面提交的代码相同的流):import random

result = ''

choice = ''

message = ''

characters_in_order = [chr(x) for x in range(32,127)]

while choice != 0:

choice = input("\n Do you want to encrypt or decrypt the message?\n 1 to encrypt, 2 to decrypt or 0 to exit program. ")

if str(choice) == '1':

message = input('\nEnter message for encryption: ')

r_seed = input('Enter an integer to use as a seed: ')

random.seed(r_seed)

shuffled_list = [chr(x) for x in range(32,127)]

random.shuffle(shuffled_list)

for i in range(0, len(message)):

result += shuffled_list[characters_in_order.index(message[i])]

print(result + '\n\n')

result = ''

elif str(choice) == '2':

message = input('\nEnter message to decrypt: ')

r_seed = input('Enter an integer to use as a seed (should be the same one used to encrypt): ')

random.seed(r_seed)

shuffled_list = [chr(x) for x in range(32,127)]

random.shuffle(shuffled_list)

for i in range(0, len(message)):

result += characters_in_order[shuffled_list.index(message[i])]

print(result + '\n\n')

result = ''

elif str(choice) != '0':

print('You have entered an invalid input, please try again. \n\n')

您会注意到,我设置了一个全局“按顺序字符”列表,它只是按顺序排列的每个ASCII字符(32-126)。我还导入了“random”模块,并使用它根据用户输入的种子对字符进行无序排列。只要这个种子在加密和解密端是相同的,它就会产生相同的无序列表,并且应该加密或解密相同的字符串。还要注意输入选项周围的str()。否则,用户必须输入“1”,而不是1才能提交选择而不出错。

所有这些都说明。。。请注意,新函数的工作方式是查看一个列表中某个字符的索引,然后在另一个列表中拉出该索引处的字符。您使用的递增或递减字符的ASCII码的方法是基本的(尽管没有比这更基本),但它也有一个相当严重的缺陷,即ASCII集的一端或另一端的字符不会返回ASCII字符。如果您在位级别加密它(这是首选),这无关紧要/无关紧要,但在这里,您不会得到想要的字符串类型,如果您要,例如,在要加密的明文中输入[空格](ASCII 32)。

如果你感兴趣的话,你可能想阅读一下对称密钥加密/DES,了解一些关于加密是如何真正完成的想法,尽管这是一个开始/兴趣的道具,而且这肯定是一个有趣的方式来创建某种密码拼图或类似的东西。我不会假装是什么专家,但我至少可以指点你的写作方向。(https://en.wikipedia.org/wiki/Data_Encryption_Standardhttps://en.wikipedia.org/wiki/Symmetric-key_algorithm)

考虑让您的代码读入一个.txt文件并打印到一个.txt文件中,而不是对消息使用用户输入。

再说一次,我无论如何都不是专家,而且肯定有一些有趣的用途,比如你想要的程序,如果你感兴趣的话,试着给你指出正确的方向。希望所有这些都有帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值