python代码实现移位和仿射密码
时间: 2023-10-13 21:25:14 浏览: 160
移位密码是一种简单的密码算法,它将明文中的每个字母按照指定的位数向左或向右移动,生成密文。例如,如果将明文中的每个字母都向右移动3位,那么A就变成了D,B变成了E,以此类推。
下面是一个用Python实现移位密码的代码示例:
```python
def shift_cipher(text, shift):
result = ""
for char in text:
if char.isalpha():
if char.isupper():
result += chr((ord(char) + shift - 65) % 26 + 65)
else:
result += chr((ord(char) + shift - 97) % 26 + 97)
else:
result += char
return result
```
其中,text是要加密的明文,shift是要移动的位数。代码中使用了ord和chr函数来获取字符的ASCII码和将ASCII码转换为字符。isalpha函数用于判断字符是否为字母,isupper函数用于判断字符是否为大写字母。
仿射密码是一种更加复杂的密码算法,它将明文中的每个字母先进行一次乘法变换,再进行一次加法变换,生成密文。仿射密码的加密公式为:E(x) = (ax + b) mod 26,其中a和b是密钥,x是明文中的字母,mod 26表示取模运算。
下面是一个用Python实现仿射密码的代码示例:
```python
def affine_cipher(text, a, b):
result = ""
for char in text:
if char.isalpha():
if char.isupper():
result += chr(((a * (ord(char) - 65) + b) % 26) + 65)
else:
result += chr(((a * (ord(char) - 97) + b) % 26) + 97)
else:
result += char
return result
```
其中,text是要加密的明文,a和b是密钥。代码中使用了ord和chr函数来获取字符的ASCII码和将ASCII码转换为字符。isalpha函数用于判断字符是否为字母,isupper函数用于判断字符是否为大写字母。
阅读全文