【问题标题】:How to convert java (Android) crypto params to iOS crypto?如何将 java (Android) 加密参数转换为 iOS 加密?
【发布时间】:2014-10-04 09:27:13
【问题描述】:

我正在开发 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 键。

我的假设正确吗?

【问题讨论】:

标签: java ios encryption


【解决方案1】:

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

“DESede”是指:
DES(数据加密标准),不应用于新工作。
ede 表示加密、解密、加密3DES(三重 DES - 168 位,24 字节),密钥使用与 DES(单 DES - 56 位,8 字节)向后可比较,密钥分为三个密钥,其中第一个用于加密,第二个用于加密解密,第三个加密(ede)。也可以使用不同的加密和解密顺序,但不是标准的,所以请检查一下。

注意,每个字节的高位是奇偶校验,一般忽略。

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

填充也可以变化,PKCS#7 是通用标准,但一些实现(例如 PHP)使用非标准填充。使用 PKCS#7,加密长度将始终比明文数据长至少一个字节。对于这种类型的加密,PKCS#5 本质上是相同的。

【讨论】:

  • 10x 用于重播。我对 iOS 很陌生,对 C 和 Crypto 有一点经验。我在 Google 中搜索,发现 solution 返回了我需要的确切字符串(对于给定的一组参数,我从 SOAP 服务中获得了正确的字符串)。
猜你喜欢
  • 2014-09-13
  • 2017-09-25
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 2012-07-26
  • 2017-09-19
相关资源
最近更新 更多