【发布时间】: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
解码显然失败了。
所以我的问题分为两部分。
- 是否有一种 Cipher 类型可以进行所需的解码,还是我需要先破解加密的 AES 密钥并对其进行解密?
- 如果我需要分解它,数据块的加密 AES 密钥部分有多长,如果您知道密码,那就太棒了。
【问题讨论】:
标签: java objective-c encryption