如何在ios中使用RSA公钥加密和解密字符串(纯文本),swift [英] how to encrypt and decrypt a String(Plain Text) with RSA public key in ios, swift

查看:26
本文介绍了如何在ios中使用RSA公钥加密和解密字符串(纯文本),swift的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to Encrypt a string(Plain Text) with my RSA public key. I have a public key, which sent from the server as a String and with that I created a RSA public key. now I want to use that key to Encrypt my text with padding PKACS12. how can I do that. I went through lots of stack overflow questions and I didn't get any success.

这就是我创建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 public key.现在我想用这个密钥来加密我的另一个 Plain Text.我该怎么做.

this creates a RSA public key successfully. now I want to use this key to encrypt my another Plain Text. how can I do that.

推荐答案

希望能帮到你:

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中使用RSA公钥加密和解密字符串(纯文本),swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆