简述
置换密码是一种不改变明文字符、只改变字符顺序的加密算法。
加解密:
给出明文字符串,如 abcde
,则此时的排序记为 [1,2,3,4,5]
给定一个随机序列作为密钥,如 [2,1,4,5,3]
- 加密
将原始字符串的字符位置,按照密钥的排序位置改变,重新组合。
初始序列:[1,2,3,4,5]
置换序列:[2,1,4,5,3]
上述加密结果:[b,a,d,e,c]
- 解密
将密文序列进行一次密钥的逆置换,即得明文。
初始序列:[1,2,3,4,5]
置换序列:[2,1,4,5,3]
逆置序列:[2,1,5,3,4]
上述解密结果:[1,2,3,4,5]
即 [a,b,c,d,e]
代码示例
#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time : 2019/12/11 15:03
# @Author : SystemDefenser
# @Email : mrwx1116@163.com
# @Software: PyCharm
from random import randrange, shuffle
# 生成消息分组
def inputMassage(massage, keyLength):
massageList = []
# 扩充消息序列并创建分组
while len(massage) % keyLength != 0:
massage += " "
for i in range(1, len(massage) +