我正在使用加密數據在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
提交
取消