【问题标题】:How to write One-Time Pad cipher in Python如何在 Python 中编写一次性密码
【发布时间】:2021-12-31 04:23:09
【问题描述】:

根据维基百科,One-Time Pad 是一种无法破解的加密技术。如何在 Python 中实现 One-Time Pad 加密?

【问题讨论】:

  • 这并不完全正确。如果使用正确,它不会被破解。如果一次性垫被反复使用,则可以使用频率分析将其破解。
  • 顾名思义应该使用一次,所以这是基本假设。

标签: python encryption one-time-pad


【解决方案1】:

这是一个示例实现

def encrypt(pad, secret):
    return ''.join([chr(ord(c) ^ ord(secret[i])) for i, c in enumerate(pad[:len(secret)])])

现在您可以使用它来加密您的消息。记住pad 的大小至少应该是密钥的大小:

secret = 'i am a secret'
pad = '33116f14-9b6f-42c6-9636-3dbd31c0548d'
enc = encrypt(pad, secret)

你可以用同样的函数破译它:

assert secret == encrypt(pad, enc)

【讨论】:

  • 你真的可以在这里使用zip
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 2022-09-27
  • 2019-09-02
  • 1970-01-01
相关资源
最近更新 更多