Как создать закрытый ключ RSA в Swift? - PullRequest
0 голосов
/ 30 января 2019

Я зашифровал текст открытым ключом, сгенерированным с использованием модуля и экспоненты. Я перешел по этой ссылке: https://meniny.cn/posts/RSA_public_key_with_modulus_and_exponent/

Я хочу расшифровать этот текст с помощью закрытого ключа, сгенерированного с использованием другого модуля и экспоненты.не удалось найти функцию в Swift или Objective-C, которая решает эту проблему.

Поэтому я использую код Java, чтобы получить закрытый ключ в виде String и сгенерировать также файл pem.

Здесьмой код:

 let PRIVATE_KEY = "MIGxAgEAMA0GCSqGSIb3DQEBAQUABIGcMIGZAgEAAkBXIKDI5NbyZd/d5tO6djSv\rt8GDc7soyNaqSqZq/w9A/zxiZTA0uwnvYv9E+OXKS9yjPCqpu9d1ELzxQxU9KRFD\rAgEAAkAYEBbX5PvIboJpkrqfIM5kSWfUmj3ygaVn2r4jhtX7qS8+0v09fwifoeMP\r5TgmB2B8+47n8+MQ55/cKbMs2QpBAgEAAgEAAgEAAgEAAgEA\r"
    let data = PRIVATE_KEY.data(using: String.Encoding.utf8)!
    let priv =  data.base64EncodedString()
   let keyData = Data(base64Encoded: priv)!
    let dict = [
        kSecAttrKeyType: kSecAttrKeyTypeRSA,
        kSecAttrKeyClass: kSecAttrKeyClassPrivate,
        kSecAttrKeySizeInBits : NSNumber(value : 128),
        ] as [CFString : Any]
    let key = SecKeyCreateWithData(keyData as NSData, dict as NSDictionary, nil)
       let blockSize = SecKeyGetBlockSize(key!)
    var encrypted = [UInt8](repeating: 0, count: blockSize)
    var encSize = blockSize

    let status = SecKeyDecrypt(key!,
                               SecPadding.PKCS1, x,
                               x.count, &encrypted,
                               &encSize)

   let decData = NSData(bytes: &encrypted, length: encrypted.count)
    let decString = decData.base64EncodedString(options: NSData.Base64EncodingOptions())

Я всегда получаю ноль для значения ключа.

Я пытался найти решение, но я не могу найти подходящий закрытый ключ для правильного дешифрования моего текста.

Любая помощь, пожалуйста?

...