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

Ios 创建密码实例Objective-C并获取块大小,ios,objective-c,encryption,aes,caesar-cipher,Ios,Objective C,Encryption,Aes,Caesar Cipher,我们需要为Android和iOS创建相同的加密方法。我们已经编写了一个现有的工作代码和Java,但我正努力在Objective-C中找到等效的解决方案。基本上,这就是我们想要复制的 Cipher cipher = Cipher.getInstance("AES"); int blockSize = cipher.getBlockSize(); 我对加密相当陌生,所以我可能无意中读到了这篇有用的文章,但无法完全理解。加密算法AES使用的是特定于提供商的操作模式。对于普通JDK,这意味着它使用AE

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

Cipher cipher = Cipher.getInstance("AES");
int blockSize = cipher.getBlockSize();
我对加密相当陌生,所以我可能无意中读到了这篇有用的文章,但无法完全理解。

加密算法AES使用的是特定于提供商的操作模式。对于普通JDK,这意味着它使用AES/ECB/PKCS5P添加,除非提供程序被弄乱或使用了硬件密钥。大多数提供程序都会模仿Oracle提供程序,因此通常情况下,这就是您得到的结果

所以基本上你需要在ECB模式下实现AES,所以如果没有IV和PKCS7填充,Java的PKCS5填充不是一个正确的名称,但是它是

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

请注意,CiphergetBlockSize以字节而不是位返回大小


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

感谢您的解释。我想模拟的是得到块的大小。我调试了现有的java代码,发现块大小是16字节。这与您的解释一致,默认值为128位,相当于16个字节。是的,因此只需键入16或可能将该值放入常量中,您就可以走得更远: