作为练习,我正在实现自己的CBC和CTR模式。(例如,对于CBC的第一块,E(k, IV xor message[0]
)。
例如,我尝试了以下想法,我可以将其用作我的E
函数(使用BouncyCastle):
Cipher cipher = Cipher.getInstance("AES/NONE/PKCS5", "BC");
但"无"不是一种选择。
我的问题是如何使用Java AES函数来实现我的目的;我该怎么做E(k, ...)
?
通常,要构建自己的密码,您需要有权访问块模式操作。如果您只能访问更高级别的功能,则应使用未指定填充的 ECB 模式加密。ECB 模式在给定密码和密钥的情况下独立转换每个块。填充应仅针对块模式操作执行,即使如此,也应仅对最后一个块执行填充。
如果要在 Java 加密体系结构中使用它,则将使用"AES/ECB/NoPadding"
模式。