换位加密原理:
换位加密就是将消息打乱,例如原文“Common sense is not so common.”然后我们假如我们将密钥设置成8,然后从将原文的每个字母从1开始编号,空格也算,将1、1+8、1+2*8 ... ... 1+n*8 组成一个字符串,将2、2+8、2+2*8... ... 2+n*8组成一个数组以此类推。
看了这张图有没有似曾相识相识的感觉。希尔排序;
然后就看代码实现吧
def encryptMessage(key, message): # Each string in ciphertext represents a column in the grid. ciphertext = [''] * key # Loop through each column in ciphertext. for col in range(key): pointer = col # Keep looping until pointer goes past the length of the message. while pointer < len(message): # Place the character at pointer in message at the end of the # current column in the ciphertext list. ciphertext[col] += message[pointer] # move pointer over pointer += key # Convert the ciphertext list into a single string value and return it. return ''.join(ciphertext) def main(): myMessage = 'Common sense is not so common.' myKey = 8 ciphertext = encryptMessage(myKey, myMessage) print(ciphertext + '|') if __name__ == '__main__': main()
