【发布时间】:2018-09-03 01:50:37
【问题描述】:
我在 python 程序中有一些数据,我想在使用密码写入文件之前对其进行加密,然后在使用之前读取并解密它。我正在寻找一些可以根据密码加密和解密的安全对称算法。
This question 显示了一种不安全的方式并建议使用 libsodium。由于我使用的是 Python,所以我找到了pysodium。它似乎有大量从 libsodium 映射的函数,但我不知道如何简单地根据密码加密/解密数据。
我的问题是,看起来所有加密算法都使用密钥。我不想使用钥匙。我想只使用密码。就像我在终端中所做的那样:
加密:
$ cat data | openssl aes-256-cbc -salt | dd of=output.des3
解密:
$ dd if=output.des3 | openssl aes-256-cbc -d -salt
是否可以用 pysodium 做到这一点(以跨平台的方式,所以请不要建议使用系统调用)?
【问题讨论】:
-
1.加密是基于数据的,这意味着 8 位字节,而不是字符,并且密钥需要是正确的长度。 2. 如果您想使用密码,您需要从不常用的方法派生密钥是加密哈希,并且为了安全,应该消耗约 100 毫秒的 CPU 时间,选择的方法是 PBKDF2。需要 CPU 刻录,因为通常密码不安全,它们是针对常用密码列表进行暴力破解的。 3. 3DES,不是 AES,真的吗?
-
@zaph 感谢您的回复。您对 AES 的看法是正确的。我正在切换到那个。我目前也在研究 PBKDF2。但与此同时,你为什么要区分字符和字节?解决这个问题不是我们只需要 ascii 吗?还有关于彩虹桌......嗯......这不是我们使用盐的原因吗?为什么即使加盐(必要时加胡椒)密码也不安全?如果我提出明显的问题,请原谅我对此事的无知。我错过了什么明显的东西吗?
-
@JamesKPolk 感谢您尝试提供帮助...由于某种原因,当我运行
crypto_pwhash时,我不断收到“不支持的版本”错误...不知道为什么或如何以及缺乏文档是真的恼人的。我正在做与我想做的完全相反的事情......我希望我能找到一些单线来加密我的数据和单线来解密它,但由于某种原因不存在。现在我正在处理 python 的密码学包......也许可以做到。 -
如果您解决了您的问题,请发表您的答案
-
@IamTheWalrus 我现在正在考虑使用 Argon2 对我的密码进行哈希处理,然后将其用作密钥。我正在努力。
标签: python python-3.x encryption openssl