java - 如何将 java (Android) 加密参数转换为 iOS 加密?

标签 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 键。

我的假设是否正确?

最佳答案

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

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

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

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

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

关于java - 如何将 java (Android) 加密参数转换为 iOS 加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26191442/

相关文章:

java - 使用ArrayList(或更好的链接列表)编写自己的队列在技术上是否正确?[下面的java代码]

java - 如何检查新的 JSON 文件是否可用?

C#,将字符串编码/解码为一些带有校验和的简单代码

ios - 使用 NSFileManager 进行文件加密

java - 如何在 Java Servlet 中使用 Session?

java - 更好的方法来通知其他线程停止?

与手机更换无关的 iphone 重要位置事件

ios - 如何在横向设置垂直约束( Storyboard)

.net - 加密 connectionStrings 部分 - app.config 的实用程序

java - 向 JTable 中的每个单元格添加额外的不可见信息