是否有公钥流密码加密?

时间:2012-03-16 13:02:19

标签: python encryption public-key-encryption

我有一个程序可以定期将敏感数据的小块(比方说8个字节)附加到多个日志文件中。我希望这些数据能够加密。我希望程序在启动时自动启动,所以我不想在程序启动时输入密码。我也不希望它在某个地方存储密码,因为这几乎会破坏加密的目的。

由于这些原因,在我看来,公钥加密将是一个不错的选择。该程序知道我的公钥,但我的私钥在其他地方受密码保护。

到目前为止,这么好。但是当我尝试使用PyCrypto到RSA(或ElGamal) - 加密一个小的5字节字符串时,输出会爆炸到128字节。我的日志文件足够大......另一方面,当我尝试像Blowfish这样的对称加密时,输出字符串和输入字符串一样大。

所以,我的问题是:是否有一个相当安全的公钥加密算法,我可以一次加密8个字节的数据并且不会爆炸? (我想因为2可以)。我想我想要的是一个公钥流密码。

如果没有这样的东西,我想我会放弃并使用对称加密并在启动时手动提供密码。

2 个答案:

答案 0 :(得分:4)

通常,这可以通过程序创建一些(实际)随机数的方式来解决,这些随机数用作对称加密算法的密钥。

在你的程序中,你必须做类似的事情:

  1. 生成一些真实的随机数据(可能使用/ dev / random)作为密钥。
  2. 使用公钥算法加密密钥。
  3. 使用密钥进行其他对称算法。
  4. 要解密,

    1. 使用私钥解密密钥。
    2. 使用密钥和对称算法解密数据。
    3. 您可能希望为“好”键获取一些随机数据(例如> = 256位)。

答案 1 :(得分:0)

您需要做的事情就像SSL那样:使用公钥加密交换密钥,然后使用对称加密。非对称加密在性能方面效率非常低,不应该用于此类内容。