RSA-шифрование и дешифрование в Webapp (JavaScript) и iOS -App (Swift) - PullRequest
0 голосов
/ 28 апреля 2020

Я создаю веб-приложение (JavaScript) и iOS -App (Swift). Проблема в том, что iOS -app и webapp должны создавать публичные c и закрытые ключи и обмениваться ими.

Я пытался использовать JSEncrypt (https://github.com/travist/jsencrypt) для веб-часть и CryptorRSA для мобильной части.

При создании ключа publi c в JSEncrypt я получаю что-то вроде этого:

  -----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC68ROkNzyo01gJCvo94mI/SswF
2FWDk4nvjbkcFeDWUZFd8t/2whnNJv9Nj+Y0VO2LSu5fVm6FIuGiesz1EzaBNkIL
kfphsSJjE8GGRqHYgdUgidv1mgkF+86Uk7hDDYtv4gUTLALXdHwDpsu28ww57ISA
Gxxidh7oyR74+cq46wIDAQAB
-----END PUBLIC KEY-----

Затем я пытаюсь зашифровать его с помощью CryptorRSA:

     let key = try? CryptorRSA.createPublicKey(withPEM: """
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC68ROkNzyo01gJCvo94mI/SswF
2FWDk4nvjbkcFeDWUZFd8t/2whnNJv9Nj+Y0VO2LSu5fVm6FIuGiesz1EzaBNkIL
kfphsSJjE8GGRqHYgdUgidv1mgkF+86Uk7hDDYtv4gUTLALXdHwDpsu28ww57ISA
Gxxidh7oyR74+cq46wIDAQAB
-----END PUBLIC KEY-----
""")



  if let k = key {
        print("1");
        if let text = try? CryptorRSA.createPlaintext(with: "hallo Welt!", using: String.Encoding.utf8) {
            print("2");
            let encryptedData = try? text.encrypted(with: k, algorithm: .sha1)
            print(encryptedData)
            if let d = encryptedData {
                print(try? d.base64String)
            }
        }

    }

Что возвращает:

chvRmbYpzNFVL5HPW9JP3BrkonSbcmObdfKteXfCr9Yw3Gycr4irqEjxroBFKli+lVF89lWaxTRCy2prn7Athbi7EGdG5y6dITyFWGf/p91NAAbWdQlz+AOsWb6lPs3MfBqHnqG2O1vDrh5yEGImM+40QvZB9yMLGTA1Y2LPRe157ymFOp3C4aW7/+we9a7aQiCw6QavcsUvdhg=

Но когда я пытаюсь расшифровать его после этого в JSEncrypt , это просто приводит к ошибке.

...