如何在ios中用RSA公钥encryption和解密string(纯文本),swift

我想用我的RSA公钥Encrypt一个string(纯文本)。 我有一个public key ,从服务器发送一个String并与我创build一个RSA公钥。 现在我想使用该密钥来Encrypt我的文本与填充PKACS12 。 我怎样才能做到这一点。 我经历了很多堆栈溢出问题,并没有得到任何成功。

这是我如何创buildRSA public key

 let serverPublicKey = "Some text with key" let data2 = Data.init(base64Encoded: serverPublicKey) let keyDict:[NSObject:NSObject] = [ kSecAttrKeyType: kSecAttrKeyTypeRSA, kSecAttrKeyClass: kSecAttrKeyClassPublic, kSecAttrKeySizeInBits: NSNumber(value: 2048), kSecReturnPersistentRef: true as NSObject ] let publickeysi = SecKeyCreateWithData(data2! as CFData, keyDict as CFDictionary, nil) 

这将成功创build一个RSA public key 。 现在我想用这个密钥来encryption我的另一个Plain Text 。 我怎样才能做到这一点。

希望对你有帮助:

 let serverPublicKey = "Some text with key" let data2 = Data.init(base64Encoded: serverPublicKey) let keyDict:[NSObject:NSObject] = [ kSecAttrKeyType: kSecAttrKeyTypeRSA, kSecAttrKeyClass: kSecAttrKeyClassPublic, kSecAttrKeySizeInBits: NSNumber(value: 2048), kSecReturnPersistentRef: true as NSObject ] let publickeysi = SecKeyCreateWithData(data2! as CFData, keyDict as CFDictionary, nil) //Encrypt a string with the public key let message = "This is my message." let blockSize = SecKeyGetBlockSize(publickeysi!) var messageEncrypted = [UInt8](repeating: 0, count: blockSize) var messageEncryptedSize = blockSize var status: OSStatus! status = SecKeyEncrypt(publickeysi!, SecPadding.PKCS1, message, message.characters.count, &messageEncrypted, &messageEncryptedSize) if status != noErr { print("Encryption Error!") return }