python凯撒密码流程图_Python凯撒密码和反密码

本文介绍了Python实现的凯撒密码加密和解密过程,详细讲解了加密和解密的步骤,并提供了相应的代码示例。同时讨论了反密码的加密解密原理,指出其安全性较低的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

凯撒密码

写出字母表的字母从A到Z的数字从0到25根据每个字母。A下面是0,B下面是1,等等,直到Z,下面为25.(有字母表中的26个字母,但我们的数字只上升到25,因为我们开始在0,而不是1):

Center

我们可以加密的字母,“Hello. How are you?” 为 “Uryyb. Ubj ner lbh?”

用上面字母到数字的代码,我们可以用数字来表示字母。这是一个非常强大的概念,因为数学使用数字。现在我们有了一个用字母写数学的方法。

现在加密,我们找到的数字下的字母,我们希望加密和添加密钥号码给它。这个总和将是加密信下的号码。例如,我们加密,“Hello. How are you?” 用钥匙13。首先,我们发现的H为7。然后我们添加这个号码的关键。7 + 13 = 20。数字20是为字母U,这意味着字母H加密到字母U。加密的E字母,4加13得到17。17以上的数字是R,所以E得到加密R等。

这样效果很好,但是直到我们得到字母O。O下的数字是14。但当我们添加14 + 13我们得到27。但是我们的数字只有25。如果字母的数目和键的26或以上,我们应该减去它的26。所以27 - 26是1。数字1以上的字母是B,所以当我们使用密钥的时候,字母O对字母B进行加密。一个接一个

所以加密字母的步骤是:

1。从1到25决定一个数字为密钥。保持这个密钥的秘密!

2。找到明文字母的号码。

3。添加密钥数字到明文字母的号码,生成一个数字。

4。如果这个数字大于26,减去26。

5。找到你计算的数字对应的字母。这就是密文。

6。对明文中的每个字母重复步骤2

请看下面的表格,看看如何使用密钥13加密“Hello. How are you?”。每个行都显示了将左边的明文字母转到右侧的密文的步骤。

Center

解密,减去密钥数字,而不是添加它。对于密文B,数字是1。减去1 - 13得到- 12。像我们的“减法26”加密规则,当我们解密和结果是小于0,我们有一个“添加26”规则。- 12 + 26是14。所以密文字母B解密回字母O.

Center

双强度加密?

如果我们对“KITTEN”3键,得到的密文就是“nlwwhq”。如果我们对“nlwwhq”4键,得到的密文,将“rpaalu”。但这与我们用“7”键一次加密“小猫”一词是完全一样的。我们的“双”加密和普通加密是一样的,所以它没有更强的。

对于大多数加密算法,加密一次以上不提供额外的密码强度。事实上,如果你用两个加起来等于26的密钥加密一些明文,你最终得到的密文和原来的明文是一样的!

反密码

? 反向密码通过反向打印来加密消息。所以“Hello world!” 加密到“!dlrow olleH”。要解密,只需反转反向消息即可得到原始消息。加密和解密步骤相同。这是一种非常脆弱的密码。只要看它的密文,你可以发现它只是相反的顺序。 .syas ti tahw tuo erugif llits ylbaborp nac uoy ,detpyrcne si siht hguoht neve ,elpmaxe roF。

凯撒密码加密解密的实现

# encoding:utf-8

import string

def Encrypt(yourStr, KEY):

C = string.ascii_letters

# 生成符号映射

lc = [chr((i - 97) % 26 + 97) for i in range(97 + KEY, 123 + KEY)]

uc = [chr((i - 65) % 26 + 65) for i in range(65 + KEY, 91 + KEY)]

R = ''.join(lc) + ''.join(uc)

return yourStr.translate(string.maketrans(C, R))

def Decrypt(yourStr, KEY):

C = string.ascii_letters

# 生成符号映射

lc = [chr((i - 97) % 26 + 97) for i in range(97 + KEY, 123 + KEY)]

uc = [chr((i - 65) % 26 + 65) for i in range(65 + KEY, 91 + KEY)]

R = ''.join(lc) + ''.join(uc)

return yourStr.translate(string.maketrans(R, C))

if __name__ == '__main__':

plainText = 'hello the world!'

cipherText = Encrypt(plainText, 7)

print(cipherText)

plainText = Decrypt(cipherText, 7)

print(plainText)

运行结果:

olssv aol dvysk!

hello the world!

[Finished in 0.1s]

反密码加密解密的实现

# Reverse Cipher

message = 'Three can keep a secret, if two of them are dead.'

translated = ''

i = len(message) - 1

while i >= 0:

print(translated)

translated = translated + message[i]

i = i - 1

运行结果:

.daed era meht fo owt fi ,terces a peek nac eerhT

这样写其实很不符合Python优雅的特性,对代码进行大改造:

# Reverse Cipher

message = 'Three can keep a secret, if two of them are dead.'

def reverseDecrypt(str):

return ''.join(reversed(message))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值