繁体   English   中英

如何在Java中解密在Obj-c中加密的数据

[英]How to decrypt data in Java that was encrypted in Obj-c

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

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

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

由于我需要发送更长的块,并且尝试在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));
SecKeyAlgorithm algorithm = kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM; NSData* cipherText = nil; cipherText = (NSData*)CFBridgingRelease( // ARC takes ownership
SecKeyCreateEncryptedData(self.pubKey, algorithm, (__bridge CFDataRef)data, &error));
Java: 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
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. 是否有密码类型可以进行所需的解码,或者我需要分解加密的AES密钥并首先对其进行解密?
  2. 如果需要分解,数据块中加密的AES密钥部分需要多长时间,并且,如果您知道密码,那将是很棒的。

是否有密码类型将进行所需的解码

您可以阅读密码文档。 我相信您正在寻找RSA/ECB/OAEPWithSHA-256AndMGF1Padding

我看到该名称与Obj-C名称并不完全匹配,但这是一个通用标准,因此可能值得尝试

由于我需要发送更长的块,并尝试切换到kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM

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

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

因此,适当的加密将是

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

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

编辑:当也使用OAEP时,此方法可能很有用RSA / ECB / OAEPWithSHA-256AndMGF1Padding但使用SHA-256的MGF1吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM