Я создаю веб-приложение (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 , это просто приводит к ошибке.