#加密 def encrypt_fence(string, key): ciphertext = "" temp = []#创建列表储存字符串 for i in range(key):#按分栏数遍历 temp.append("")#添加空格到字表中 for index, i in enumerate(string): temp[index % key] += i ciphertext = "".join(temp)#使生成字母加入到新的字符串中 return ciphertext #解密 def decrypt_fence(string, key): plaintext = "" length = len(string) min_row = length // key max_num = length % key temp = [] index = 0 for i in range(key): if i < max_num: temp.append(string[index:index+min_row+1]) index += min_row + 1 else: temp.append(string[index:index+min_row]) index += min_row for i in range(length): plaintext += temp[i % key][i // key] return plaintext #主函数 if __name__ == '__main__': key_ = 3#自定义分栏数 ciphertext_ = encrypt_fence("welcome to python", key_)#调用加密函数 plaintext_ = decrypt_fence(ciphertext_, key_)#调用解密函数 a = ciphertext_.split()#字符串按空格分割成列表 ciphertext = "".join(a)#使用一个字符串合成列表内容生成新的字符串 print("密文为:{}".format(ciphertext)) print("解密得明文为:{}".format(plaintext_))
时间: 2023-06-26 19:03:52 浏览: 148
Python库 | stringencrypt-1.0.0.tar.gz
这是一个用栅栏密码进行加密和解密的 Python 代码。栅栏密码是一种简单的置换加密方式,它将明文按照一定的规则分成若干个部分,然后将这些部分按照特定的顺序重新排列,生成密文。解密时,需要按照相同的规则重新排列密文,恢复出原来的明文。
这段代码实现了栅栏密码的加密和解密功能,其中加密函数 `encrypt_fence` 将明文按照分栏数进行分组,然后按照列顺序依次取出每个字符,生成密文。解密函数 `decrypt_fence` 则是按照相反的顺序,将密文按照分栏数进行分组,然后按照行顺序依次取出每个字符,恢复出明文。
在主函数中,我们可以自定义分栏数,然后调用加密和解密函数进行测试。最后,将密文按照空格分割成列表,然后使用一个字符串合成列表内容生成新的字符串,输出密文和解密后的明文。
阅读全文