我目前正在尝试学习一些关于加密的东西,它的算法以及它是如何工作的。我正在考虑一种加密大文件的方法,对我来说唯一可行的方法似乎是使用对称密钥算法。
所以我正在研究AES,虽然将64k或32k字节块传递给您使用密码散列创建的AES对象似乎没有问题,但我仍然对最安全的方法感到好奇,因为我一直在读到密码学非常容易出错。
所以我得到了一个口令,我得到了它的SHA256校验和,当我创建我的加密/解密对象时,我用它作为密钥。
其他我找不到答案的问题:我应该使用静脉注射吗?如果是这样,我必须确保对象在解密时使用与它在encryption...how上使用的相同的IV,我是否这样做?
为什么我在这里看到有人说,即使文件的字节数可以被16整除,也应该填充文件的最后一个块?
最好使用哪种类型的加密模式?
你能推荐任何其他资源来学习更多关于安全/密码学的知识吗?
提前谢谢你
发布于 2012-04-03 19:36:21
来看看你的一些问题。
大多数情况下使用CTR模式或CBC模式。如果需要内置身份验证,请使用Galois Counter Mode (GCM)。否则使用单独的HMAC进行身份验证,并使用不同的密钥。
所有三种建议的模式都需要IV,但在CTR模式中,它有时被称为nonce。它可以明文形式发送,并且通常放在密文前面。
应该始终使用填充。选择PKCS7或PKCS5,它们实际上是相同的。
为了学习密码学,我推荐弗格森和施奈尔的“Practical Cryptography”。我知道有一个更新的版本,叫做'Cryptography Engineering',我还没有读过。
发布于 2012-04-03 16:30:27
请不要使用密码的直接散列,而要使用(或创建) KDF
https://stackoverflow.com/questions/9989622
复制相似问题