2011-03-01 54 views
0

当我得到密码实例时,我见过的各种示例都使用“AES/CBC/PKCS7Padding”。显然AES是加密算法,什么是CBC? PKCS7Padding等各种不同填充方法的优缺点有哪些?Java加密扩展中的各种AES变体有哪些优缺点?

我希望使用它来端到端加密单个UDP数据包 - 任何不明智的原因?

+0

“CBC”?你一直在看bouncycastle.org,对吧?顺便说一句,如果你使用UDP,你打算如何交换对称密钥? – bestsss 2011-03-01 13:14:07

+0

http://www.ietf.org/rfc/rfc2898.txt – Yaneeve 2011-03-01 13:17:40

+0

bestsss,我将使用RSA交换对称密钥。 – sanity 2011-03-01 15:48:30

回答

1

至于操作CBC模式而言,建议在可能时使用它代替ECB。特别是在纯文本加密或重复数据的情况下。 (网络协议明显属于这一类)

ECB(电子代码块)独立地处理每个块。因此,对于流中的每个出现,相同的块将被加密相同。利用CCB(密码块链接)传播先前块加密的状态,然后用不同的salt对相同的块进行编码,这使得结果在相同块的出现中不同。

关于填充的东西。目标是能够明确地删除解密过程中的填充。我没有通过“为什么”比另一个更好,但我可以在Niels Ferguson和Bruce Schneier的书中找到一些解释,因为他们推荐使用PKCS填充或0x80 0x00 ...填充。

在多种语言和/或加密馆藏中使用AES时请注意。实际上,对于单一算法,实现似乎有很大不同。有时候,这只是默认参数,有时候没有其他参数。

+0

谢谢你。任何有关使用它来加密单个UDP数据包的注释(每个约1.5k)? – sanity 2011-03-01 15:48:57

+0

你的意思是加密UDP有效载荷? – 2011-03-01 15:52:24

相关问题