如何将java(Android)crypto params转换为iOS加密?

时间:2014-10-04 09:27:13

标签: java ios encryption

我正在开发iOS应用。在该应用程序内部,我必须调用SOAP服务并发送加密数据。要与SOAP服务通信,我必须使用已经使用Android应用程序的相同配置。在该应用程序中,存在以下代码:

   private static final String ENCRYPTION_KEY_TYPE = "DESede";
   private static final String ENCRYPTION_ALGORITHM = "DESede/CBC/PKCS7Padding";

我需要转换该参数,以便我可以将它们与CCCrypt函数一起使用。我认为DESede密钥类型对应kCCAlgorithm3DES。对于算法我读到CBC是默认的,所以我想我必须使用kCCOptionPKCS7Padding。我也有iv键。

我的假设是否正确?

1 个答案:

答案 0 :(得分:1)

确保按键和iv 完全正确的长度。

" DESede"意味着:
DES (数据加密标准),不应用于新工作 ede 意味着加密,解密,加密3DES(三重DES - 168位,24字节),其密钥用法与DES(单DES - 56位,8字节)向后可比,密钥被破坏分为三个密钥,第一个用于加密,第二个用于解密,第三个用于加密(ede)。使用不同的加密和解密序列也是可能的,但非标准的,所以检查。

注意,每个字节中的高位是奇偶校验,通常被忽略。

iv可能会有问题,因为除非静态必须与加密数据一起传输,否则一种常用的方法是将iv预先挂起到加密数据。

填充也可能不同,PKCS#7是通用标准,但某些实现(如PHP)使用非标准填充。对于PKCS#7,加密长度总是比普通数据长至少一个字节。对于这种类型的加密,PKCS#5基本相同。