【问题标题】:How to decrypt data in Java that was encrypted in Obj-c如何解密在 Obj-c 中加密的 Java 数据
【发布时间】:2019-08-22 22:23:16
【问题描述】:

我正在使用 SecKeyEncryptedData 在 ojb-c 中加密,并尝试使用 javax.Cipher 在 Java 中解密并遇到问题。

我最近开始处理长块,并且需要使用对称加密和使用非对称密钥对加密的 AES 密钥。我在解码时遇到问题。

我有 iOS 密钥 kSecKeyAlgorithmRSAEncryptionPKCS1 用于与 Java 中的 Cipher.getInstance("RSA/ECB/PKCS1Padding") 匹配的非对称数据。这会解码短块。

因为我需要发送更长的块,并且我试图在 iOS 上切换到 kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM 并且它加密得很好,但是我找不到在 Cipher 中使用的方法来解密它并且不明白它是否需要在 2 中完成Java 中的云端步骤。

OBJ-C: SecKeyAlgorithm algorithm = kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM; NSData* cipherText = nil; cipherText = (NSData*)CFBridgingRelease( // ARC takes ownership
SecKeyCreateEncryptedData(self.pubKey, algorithm, (__bridge CFDataRef)data, &error));
爪哇: try { cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.DECRYPT_MODE, priv); byte[] dog = decoder.decode(encString); dec = cipher.doFinal(dog); res = new String(dec);
} // handle errors

解码显然失败了。

所以我的问题分为两部分。

  1. 是否有一种 Cipher 类型可以进行所需的解码,还是我需要先破解加密的 AES 密钥并对其进行解密?
  2. 如果我需要分解它,数据块的加密 AES 密钥部分有多长,如果您知道密码,那就太棒了。

【问题讨论】:

    标签: java objective-c encryption


    【解决方案1】:

    是否有可以进行所需解码的 Cipher 类型

    您可以阅读Cipher 文档。相信你在找RSA/ECB/OAEPWithSHA-256AndMGF1Padding

    我发现名称与 Obj-C 名称不完全匹配,但这是一个通用标准,因此值得一试

    因为我需要发送更长的块,并且正在尝试切换到 kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM

    您可以尝试搜索“混合加密”。与对称密码相比,非对称密码非常慢,并且仅用于加密有限数量的数据。

    某些实现可能会加密更长的数据(对于每个提供 2048 或 4096 位输出的 256 位输入),Java 只会抱怨并停止

    所以正确的加密应该是

    • 使用随机密钥(DEK - 数据加密密钥)使用对称密码加密数据
    • 使用非对称公钥加密 DEK

    如果kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCMRSA/ECB/OAEPWithSHA-256AndMGF1Padding 不对应(兼容),您仍然可以通过这种方法使用PKCS#1 1.5 填充(旧的填充)。

    编辑:这个答案在使用 OAEP 时也可能很有用RSA/ECB/OAEPWithSHA-256AndMGF1Padding but with MGF1 using SHA-256?

    【讨论】:

    • 感谢...我最终使用了一个结构,该结构将 AES 密钥(通过密钥对加密)与使用 AES 密钥加密的数据分开...这有效.. . 我可能会在第一部分使用加密的 AES 密钥回退到单个缓冲区,但解决方案现在正在运行....感谢您的反馈!
    猜你喜欢
    • 2017-12-19
    • 2018-08-17
    • 1970-01-01
    • 2013-09-18
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多