ios - 如何在 ios,swift 中使用 RSA 公钥加密和解密字符串(纯文本)

标签 ios swift encryption rsa

我想用我的RSA公钥加密一个字符串(纯文本)。我有一个 public key,它作为 String 从服务器发送,我用它创建了一个 RSA public key。现在我想使用该 key 通过填充 PKACS12加密我的文本。我怎样才能做到这一点。我经历了很多堆栈溢出问题,但没有取得任何成功。

这就是我创建 RSA 公钥的方式,

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)

这将成功创建一个 RSA 公钥。现在我想用这个 key 来加密我的另一个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
            }

关于ios - 如何在 ios,swift 中使用 RSA 公钥加密和解密字符串(纯文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45837134/

相关文章:

iOS 8、Xcode 6 - 本地化不起作用

ios - 使用企业许可证分发 iOS 应用程序

javax.crypto.IllegalBlockSizeException : last block incomplete in decryption

java - 使用 AES 256 和 SHA-2 加密

javascript - 如何在javascript中设置AES key 为 "private"?

iphone - UITableView 滚动指示器不会隐藏在顶部或底部

ios - 当我以模态方式呈现特定的 View Controller 时,如何在 View Controller 上制作看起来熟悉的状态栏?

ios - swift,来自 View Controller 的 UIUserNotificationAction 而不是应用程序委托(delegate)

ios - 使用 scrollview 在 View 之间滑动 - swift

swift - 如何从 UnsafeMutableRawPointer 中获取字节?