在 JAVA 中加密的 AES 密钥在 swift 中解密

AES secret key encrypted in JAVA decrypt in swift

我想解密从 java 获得的加密“密钥”,服务器端检查 iOS 和 server.I 之间的安全通信也有加密文本和私人从私钥解密密钥然后从秘密 key.I 解密文本的密钥现在停留在解密秘密 从 JAVA 收到的加密密钥:“bjgZTpZD7DvrjTRXJ6LCA9GpkDnLJLgIVAmFWFXNUVqVWdjXOiOGeRHJx8owW6Pp/a5ECe8CljlwZIAFhRUEPfTks22yntUOhrCUbDzzqYOMiQYfEV/h7/zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8="

func aesOperation(_ operation: CCOperation, on data: Data?, key: String?) -> Data? {

        var keyPtr = [Int8](repeating: 0, count: kCCKeySizeAES128)
        bzero(&keyPtr, MemoryLayout.size(ofValue: keyPtr))
        key?.getCString(&keyPtr, maxLength: MemoryLayout.size(ofValue: keyPtr), encoding: .utf8)

        let dataLength = data?.count ?? 0
        let bufferSize = dataLength + kCCBlockSizeAES128
        var buffer = malloc(bufferSize)

        var numBytesEncrypted: size_t = 0
        let cryptStatus = CCCrypt(operation, CCAlgorithm(kCCAlgorithmAES128), CCOptions(kCCOptionPKCS7Padding), keyPtr, kCCBlockSizeAES128, keyPtr, data?.bytes, dataLength, buffer, bufferSize, &numBytesEncrypted)
        if cryptStatus == kCCSuccess {
            print("Success")
            return Data(bytes: &buffer, count: numBytesEncrypted)
        }
        free(buffer)
        return nil}
func decrypt(_ data: Data?, withKey key: String?) -> String? 
{
 
return String(data: aesOperation(CCOperation(kCCDecrypt), on: data, key: key)!, encoding: .utf8)

}

let base64Encoded = "bjgZTpZD7DvrjTRXJ6LCA9GpkDnLJLgIVAmFWFXNUVqVWdjXOiOGeRHJx8owW6Pp/a5ECe8CljlwZIAFhRUEPfTks22yntUOhrCUbDzzqYOMiQYfEV/h7/zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8="

let decodedData = Data(base64Encoded: base64Encoded)! 
**getting crashed in this line ** 

let decodedString = String(data: decodedData, encoding: .utf8)! 

let mySecretKeyDecrypt = decrypt(decodedData, withKey: b64Key)

b64Key是我的私钥

我正在尝试用私钥解密我的私钥。 自 2 天以来尝试了几种方法.. 任何帮助将不胜感激

您描述的崩溃是因为您的密钥不是 base64 字符串。因为它在 Ea

之间包含 space

zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8=.