创建密码实例目标C并获取块大小

问题描述 投票:0回答:1

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

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

我在加密方面还很陌生,因此我可能偶然发现了有用的文章,但无法完全理解它。在此先感谢

ios objective-c encryption aes caesar-cipher
1个回答
0
投票

Cipher与算法"AES"一起使用的是提供者特定的操作模式。对于普通的JDK,这意味着它将使用"AES/ECB/PKCS5Padding",除非提供程序已被弄乱或使用了硬件密钥。大多数提供程序都将模仿Oracle提供程序,因此通常这就是您所获得的。

因此,基本上,您需要以ECB模式(因此没有IV)和PKCS#7填充(Java的PKCS#5填充不是正确的名称,但等效于PKCS#7填充)来实现AES。

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

注意,Cipher#getBlockSize()返回字节的大小而不是位。


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

© www.soinside.com 2019 - 2024. All rights reserved.