换位加密原理:
换位加密就是将消息打乱,例如原文“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()