【问题标题】:interpreter taking long time to process numbers解释器需要很长时间来处理数字
【发布时间】:2019-09-22 02:52:16
【问题描述】:

我正在尝试实现 One Time Pad 加密,在握手过程中,python 停留时间太长而无法执行此操作

public = (private ** prime1) % prime2

public 是我打算发送的号码 private 是由 ramdom.getrandbits (128) 生成的随机 128 位数字 prime1 & prime2 是两个常见的素数 128bits

【问题讨论】:

    标签: python python-3.x cryptography numbers


    【解决方案1】:

    原则上,您可以使用the three-argument form of the pow() function。它对modular exponentiation 使用更有效的算法。

    public = pow(private, prime1, prime2)
    

    但是,我担心您将其描述为用于“一次性加密”的方式。一次性填充需要一个随机的预共享密钥,该密钥大于将要传输的所有消息的总大小。您正在实施的看起来更像是 DH 密钥交换,它不是此过程的一部分,也不能用于它。

    【讨论】:

    • 感谢您的回复,关于您的关心,是的,确实是DH共享OTP密钥,并且使用伪随机生成器,密钥将被放大,OTP将成为流的一部分密码
    • 你所描述的不是一次性的。它是一种流密码,如果使用的是非加密 PRNG,则非常不安全。
    • 有趣,请添加更多信息
    • 许多非加密 PRNG 的种子大小为 32 到 64 位。这对于安全性来说是严重不足的;攻击者可以轻松地测试每一个可能的种子来搜索解密您的消息的种子。更一般地说,非加密 PRNG 通常容易受到已知明文攻击——能够知道或猜测消息的一部分(因此,读取一些 PRNG 输出)可能足以预测其未来和/或过去的输出.
    • 非常感谢,我会确保使用加密 PRG,种子长度为 32 字节(128 位)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多