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