python密码学换位密码及换位解密转置加密教程 | 您所在的位置:网站首页 › Python位移加密算法 › python密码学换位密码及换位解密转置加密教程 |
Python密码学教程——换位密码及换位解密转置加密
什么是换位加密法
在密码学中,换位加密法(Transposition Cipher)是一种加密方式,它将明文中各个字符的位置调换来生成密文,从而达到加密的目的。具体来说,它将纯文本中的字符重新排列,但是不会改变字符本身。 换位加密法的分类 简单换位密码:将明文中的字符位置进行交换和调整,从而得到密文。 复杂换位密码:先按照某种特定的规则将明文分组,每一组再按照不同的规则进行排列,最后得到密文。 简单换位密码的原理简单换位密码通常采用的是列换位法,也就是将明文从左到右依次填写进入矩阵中,然后按照行依次读取,以此来达到加密的目的。 以下是一个对"HELLO WORLD" 进行列换位加密过程的可视化展示: H E L L O W O R L D 明文 ↓↓↓↓↓↓↓ H E L L O | W O R L D 矩阵填充 ———↓———————↓ W O R L D | H E L L O 密文首先将"HELLO WORLD" 依次填写进一个矩阵中,然后将填写后的矩阵按照行依次读取,得到密文 "WORLDHELLO"。 代码实现以下是Python代码实现"简单换位密码"的示例: def encrypt(plain_text, key): rows = len(plain_text) // key if len(plain_text) % key != 0: rows += 1 matrix = [] for i in range(rows): matrix.append([0] * key) row = 0 col = 0 for ch in plain_text: matrix[row][col] = ch col += 1 if col == key: col = 0 row += 1 cipher_text = "" for i in range(key): for j in range(rows): cipher_text += matrix[j][i] return cipher_textencrypt函数的输入参数为明文和密钥,返回值为加密后的密文。 以下为对"HELLO WORLD" 进行列换位加密的示例: plaintext = "HELLO WORLD" key = 6 ciphertext = encrypt(plaintext, key) print("明文:", plaintext) print("密钥:", key) print("密文:", ciphertext)输出结果为: 明文: HELLO WORLD 密钥: 6 密文: WLODHLLEOR 解密过程解密过程与加密过程正好相反。首先需要得到密文的行数和列数,然后填写一个同样大小的矩阵,将密文按照行依次填写进入该矩阵中,最后按照列依次读取,得到明文。 以下是Python代码实现"简单换位密码"的解密过程: def decrypt(cipher_text, key): rows = len(cipher_text) // key if len(cipher_text) % key != 0: rows += 1 matrix = [] for i in range(rows): matrix.append([0] * key) col = 0 row = 0 for ch in cipher_text: matrix[row][col] = ch row += 1 if row == rows: row = 0 col += 1 plaintext = "" for i in range(rows): for j in range(key): plaintext += matrix[i][j] return plaintext以下为对"WLODHLLEOR" 进行列换位解密的示例: ciphertext = "WLODHLLEOR" key = 6 plaintext = decrypt(ciphertext, key) print("明文:", plaintext) print("密钥:", key) print("密文:", ciphertext)输出结果为: 明文: HELLO WORLD 密钥: 6 密文: WLODHLLEOR 使用不同密钥密钥的不同会导致最后加密的结果不同。以下为不同密钥进行列换位加密的结果: plaintext = "HELLO WORLD" key1 = 6 key2 = 4 ciphertext1 = encrypt(plaintext, key1) ciphertext2 = encrypt(plaintext, key2) print("明文:", plaintext) print("密钥1:", key1) print("密文1:", ciphertext1) print("密钥2:", key2) print("密文2:", ciphertext2)输出结果为: 明文: HELLO WORLD 密钥1: 6 密文1: WLODHLLEOR 密钥2: 4 密文2: HLLDEOOWLOR 总结以上就是"Python密码学教程——换位密码及换位解密转置加密"的完整攻略。通过这篇文章,我们了解了简单换位密码的基本原理、分类以及实现方法,同时也包括了代码实现和解密过程,对于初学者来说非常友好。 本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python密码学换位密码及换位解密转置加密教程 - Python技术站 |
CopyRight 2018-2019 实验室设备网 版权所有 |