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

我正在使用加密数据在ojb-c中加密,并尝试使用爪哇x在Java中解密。密码并遇到问题。


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


我有 iOS 密钥 kSec密钥算法加密PKCS1 适用于与 Java 中的密码匹配的非对称数据(“RSA/ECB/PKCS1 填充”)。这将解码短块。


由于我需要发送更长的块,并且正在尝试切换到kSecKey算法MRSA加密OAEPSHA512AESGCM在iOS上加密,它加密得很好,但我找不到在密码中使用的方法来解密它,并且不明白是否需要在Java的云中以2个步骤完成。


黑白-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. 是否有密码类型可以执行所需的解码,或者我是否需要分解加密的AES密钥并首先解密它?

  2. 如果我需要分解它,那么数据块的加密AES密钥部分有多长,如果你知道密码,那将是太棒了。


收到一只叮咚
浏览 140回答 1
1回答

喵喵时光机

是否有一种密码类型可以执行所需的解码您可以阅读密码文档。我相信你正在寻找RSA/ECB/OAEPWithSHA-256AndMGF1Padding我看到名称与Obj-C名称不完全匹配,但这是一个通用标准,因此可能值得一试由于我需要发送更长的块,并且正在尝试切换到 kSecKey算法加密OAEPSHA512AESGCM您可以尝试搜索“混合加密”。与对称密码相比,非对称密码非常慢,并且仅用于加密有限数量的数据。无论如何,某些实现可能会加密更长的数据(对于每个提供2048 o 4096位输出的256位输入),Java只会抱怨并停止因此,适当的加密将是使用对称密码使用拉多姆密钥(DEK - 数据加密密钥)加密数据使用非对称公钥加密 DEK如果 与 不对应(兼容),您仍然可以使用 PKCS#1 1.5 填充(旧填充)和此方法。kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCMRSA/ECB/OAEPWithSHA-256AndMGF1Padding编辑:当使用OAEP时,这个帮助器可能很有用 RSA / ECB / OAEP与SHA-256和MGF1填充,但与MGF1使用SHA-256?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java