我正在使用加密数据在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解码显然失败了。所以我的问题分为两部分。是否有密码类型可以执行所需的解码,或者我是否需要分解加密的AES密钥并首先解密它?如果我需要分解它,那么数据块的加密AES密钥部分有多长,如果你知道密码,那将是太棒了。
1 回答
喵喵时光机
TA贡献1846条经验 获得超7个赞
是否有一种密码类型可以执行所需的解码
您可以阅读密码文档。我相信你正在寻找RSA/ECB/OAEPWithSHA-256AndMGF1Padding
我看到名称与Obj-C名称不完全匹配,但这是一个通用标准,因此可能值得一试
由于我需要发送更长的块,并且正在尝试切换到 kSecKey算法加密OAEPSHA512AESGCM
您可以尝试搜索“混合加密”。与对称密码相比,非对称密码非常慢,并且仅用于加密有限数量的数据。
无论如何,某些实现可能会加密更长的数据(对于每个提供2048 o 4096位输出的256位输入),Java只会抱怨并停止
因此,适当的加密将是
使用对称密码使用拉多姆密钥(DEK - 数据加密密钥)加密数据
使用非对称公钥加密 DEK
如果 与 不对应(兼容),您仍然可以使用 PKCS#1 1.5 填充(旧填充)和此方法。kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM
RSA/ECB/OAEPWithSHA-256AndMGF1Padding
编辑:当使用OAEP时,这个帮助器可能很有用 RSA / ECB / OAEP与SHA-256和MGF1填充,但与MGF1使用SHA-256?
添加回答
举报
0/150
提交
取消