python的加密和解密

加密:python -m compileall <src> ;<src>为.py文件放置的文件夹  ---- 不推荐该方法,容易被解密

解密:安装uncompyle6 : pip3 install uncompyle6

解密命令:uncompyle6  ~/*.pyc > .py

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是 Python 实现的 Playfair 加密解密加密: ```python def playfair_encrypt(key, plaintext): # 将明文中的 J 替换为 I plaintext = plaintext.replace("J", "I") # 构造 Playfair 方阵 matrix = [] chars = list(key.upper()) + [chr(i) for i in range(65, 91) if chr(i) != "J" and chr(i) not in key.upper()] for i in range(0, 25, 5): matrix.append(chars[i:i+5]) # 将明文分块 plaintext_blocks = [] i = 0 while i < len(plaintext): if i == len(plaintext) - 1 or plaintext[i] == plaintext[i+1]: plaintext_blocks.append(plaintext[i] + "X") i += 1 else: plaintext_blocks.append(plaintext[i:i+2]) i += 2 # 加密每个明文块 ciphertext_blocks = [] for block in plaintext_blocks: row1, col1 = divmod(matrix.index(block[0]), 5) row2, col2 = divmod(matrix.index(block[1]), 5) if row1 == row2: # 同一行 ciphertext_blocks.append(matrix[row1][(col1 + 1) % 5] + matrix[row2][(col2 + 1) % 5]) elif col1 == col2: # 同一列 ciphertext_blocks.append(matrix[(row1 + 1) % 5][col1] + matrix[(row2 + 1) % 5][col2]) else: # 不同行不同列 ciphertext_blocks.append(matrix[row1][col2] + matrix[row2][col1]) # 将密文块拼接成密文 ciphertext = "".join(ciphertext_blocks) return ciphertext ``` 解密: ```python def playfair_decrypt(key, ciphertext): # 构造 Playfair 方阵 matrix = [] chars = list(key.upper()) + [chr(i) for i in range(65, 91) if chr(i) != "J" and chr(i) not in key.upper()] for i in range(0, 25, 5): matrix.append(chars[i:i+5]) # 解密每个密文块 plaintext_blocks = [] for i in range(0, len(ciphertext), 2): row1, col1 = divmod(matrix.index(ciphertext[i]), 5) row2, col2 = divmod(matrix.index(ciphertext[i+1]), 5) if row1 == row2: # 同一行 plaintext_blocks.append(matrix[row1][(col1 - 1) % 5] + matrix[row2][(col2 - 1) % 5]) elif col1 == col2: # 同一列 plaintext_blocks.append(matrix[(row1 - 1) % 5][col1] + matrix[(row2 - 1) % 5][col2]) else: # 不同行不同列 plaintext_blocks.append(matrix[row1][col2] + matrix[row2][col1]) # 将明文块拼接成明文 plaintext = "".join(plaintext_blocks) # 将明文中的 X 替换为原来的字母 plaintext = plaintext.replace("X", "") return plaintext ``` 使用示例: ```python key = "playfair example" plaintext = "Hide the gold in the tree stump" ciphertext = playfair_encrypt(key, plaintext) print(ciphertext) # 输出:BMNDZBXDNABEKUDMUIXMMOUVIF ``` ```python key = "playfair example" ciphertext = "BMNDZBXDNABEKUDMUIXMMOUVIF" plaintext = playfair_decrypt(key, ciphertext) print(plaintext) # 输出:HIDETHEGOLDINTHETREXESTUMP ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三岁牧羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值