omu*_*gru 3 python security encryption encryption-symmetric
我目前正在尝试学习一些关于加密的东西,它的算法以及它是如何工作的。我正在考虑一种加密大文件的方法,对我来说唯一可行的方法似乎是使用对称密钥算法。
所以我在看 AES,虽然将 64k 或 32k 字节块传递给您使用密码哈希创建的 AES 对象似乎没问题,但我仍然很好奇最安全的方法来做到这一点,因为我一直在阅读密码学很容易搞砸。
所以我得到了一个密码,我得到了它的 SHA256 校验和,我在创建我的加密/解密对象时使用它作为密钥。
我找不到答案的其他事情:我应该使用 IV 吗?如果是这样,我必须确保对象在解密时使用与加密时相同的 IV...我该怎么做?
为什么我看到这里有人说即使字节数可以被 16 整除,你也应该填充文件的最后一个块?
最好使用哪种类型的加密模式?
您能否推荐任何其他资源来了解有关安全/密码学的更多信息?
先感谢您
看看你的一些问题。
大多数情况下使用 CTR 模式或 CBC 模式。如果您需要内置身份验证,请使用Galois Counter Mode (GCM)。否则,使用不同的密钥使用单独的 HMAC 进行身份验证。
所有三种建议模式都需要一个 IV,但在 CTR 模式下,它有时被称为 nonce。它可以以明文形式发送,并且通常附加在密文之前。
应始终使用填充。选择 PKCS7 或 PKCS5,它们实际上是相同的。
要学习密码学,我会推荐Ferguson 和 Schneier 的“实用密码学”。我知道有一个更新的版本,叫做“密码工程”,我还没有读过。