python - 是否有公钥流密码加密?

标签 python encryption public-key-encryption

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

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

到目前为止,还不错。但是,当我尝试使用 PyCrypto 对 RSA(或 ElGamal)加密一个 5 字节的小字符串时,输出激增至 128 字节。我的日志文件已经足够大了……另一方面,当我尝试对称加密时,例如 Blowfish,输出字符串与输入字符串一样大。

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

如果没有这样的事情,我想我会放弃并使用对称加密并在启动时手动输入密码。

最佳答案

通常这是通过程序创建一些(真实的)随机数来解决的,这些随机数用作对称加密算法的 key 。

在你的程序中你必须做这样的事情:

  1. 生成一些真正的随机数据(可能使用/dev/random)作为 key 。
  2. 使用公钥算法加密 key 。
  3. 将 key 用于其他一些对称算法。

要解密这个,

  1. 使用私钥解密秘钥。
  2. 使用 key 和对称算法解密数据。

您可能希望为“好” key 获取一些随机数据(例如 >=256 位)。

关于python - 是否有公钥流密码加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9737757/

相关文章:

python - NumPy 中有 unstack 吗?

php - 用PHP加密的openssl需要用Ruby解密

macos - 如何以编程方式在 macOS 上加密 PDF 文件

java - 在 Java 中使用 RSA 加密 SecretKey

Java RSA/CBC加密实现

ssl - 带有自己的 rsa 公钥信息的 openssl X509 证书

python - 有没有更快的方法为 Django View 编写类似的测试用例?

python - 列出 Python 文件中使用的所有第三方包及其自身的函数

python - 当 css 路径太长时使用 find_element_by_css_selector 定位元素

java - RSA加密中的 "A device attached to the system is not functioning"错误是什么?