创建密码实例 Objective-C 并获取块大小



我们需要为Android和iOS创建相同的加密方法。我们已经编写了现有的工作代码和Java,但我正在努力在Objective-C中找到等效的解决方案。基本上,这就是我们想要复制的。

Cipher cipher = Cipher.getInstance("AES");
int blockSize = cipher.getBlockSize();

我对加密相当陌生,所以我可能偶然发现了有用的文章,但无法完全理解它。

算法"AES"Cipher正在使用特定于提供程序的操作模式。对于普通的JDK,这意味着它使用"AES/ECB/PKCS5Padding"除非提供程序被弄乱或使用硬件密钥。大多数提供商会模仿 Oracle 提供商,所以通常这就是你得到的。

所以基本上你需要在 ECB 模式下实现 AES(所以没有 IV(和 PKCS#7 填充(Java 的 PKCS#5 填充不是一个正确的名称,但它等效于 PKCS#7 填充(。

至于块大小:AES 的块大小始终为 128 位。Rijndael,原始密码也可能有不同的块大小,除了128位之外,主要是256位。因此,在为 Rijndael 的完整实现指定 AES 时,您必须更加小心,不要混淆密钥大小和块大小。

请注意,Cipher#getBlockSize()返回大小(以字节为单位(而不是位。


请注意,ECB 模式通常不是应用分组密码的安全方式,因此您可能需要升级协议。

最新更新