Как подружить RSA SWIFT и C#?

Никак не удается обменяться открытыми ключами между клиентом IOS написанным на Swift и сервером Windows написанным на C# Суть проблемы: оба ключа выгружаются в непонятном для собеседника формате.

Для C# использую следующий код:

            CspParameters cspParams = new CspParameters { ProviderType = 1 };
            RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(keyLength, cspParams);
            string publicKey = Convert.ToBase64String(rsaProvider.ExportCspBlob(false));
            string privateKey = Convert.ToBase64String(rsaProvider.ExportCspBlob(true));

Для загрузки ключа SWIFT :

func test() {
        let privateKey = "..."
        let publicKey  = "..."

        let data = Data(base64Encoded: publicKey)

        let publicKeyAttr: [NSObject: NSObject] = [
        kSecAttrIsPermanent: true as NSObject,
        kSecClass: kSecClassKey, // added this value
        kSecReturnData: kCFBooleanTrue] // added this value


        var error: Unmanaged<CFError>? = nil
        let secKey = SecKeyCreateWithData(data as! CFData, publicKeyAttr as CFDictionary, &error)
        print (error)
    }

При этом наблюдаю следующую картину:

C# - может создавать и загружать свои собственные ключи swift - ключи создает, но даже их не может загрузить

для тестов использовал две пары ключей:

Сгенерированных на C#:

   open key: BgIAAACkAABSU0ExAAgAAAEAAQB9GpG/wmZahXS1w+hv4iNkLACwS0Cej+9kELflv9jZ2zU47Z4MBq8pIyNIJkwsPRwP9I5GJoM07HBWACfKxnCon89pZWPu6AXZy7W+ggxz7QpjaPwdW9OEqrOybe3YkMw7vUQSyHkPMkYzEmtX6gvhpeIj/MHuKksnRhiCbzB4Gedc5IJPmArD7mPpz7QdhKVrRGQrTuX74Ue7jwmzVaoGokqBoVzpcP8fXCEQTp/vqLPdVnUKd6GINUQMdKC0NXz/DDptfJgnH9gVU6h1mDvW73tiGnlCWNgeeZ3ZobFaAQCQvhG6vdmrcHJ/13DSBsevYfmij7Gs8MwYwZEyGnry
private key: BwIAAACkAABSU0EyAAQAAAEAAQAxRx19vCw+XzBepva4aoG+YzuOIgXcigsAsCB9UFFCqmMJ/yfQEyu4sI9fHm0ba/YdJQdvPJtBcENm5S7YlhbR/UTy+SBS92cjZdd4YEoogNb8WWNEZzRAfPCI+DktOOcrmWmYCCAXgrCgSfspam66CIZbTHOAD4XLtlj/MwtKteNQEnrVGaOQE+7xk9G3kQxsXMdVGL/XE87ZkhK//gleOiLxyJsi1cBeoUyA33SjvQQKJVVSDlG36LdWoP6Xut7bp/qVrFMlytqdQE/4JSGXlPxnhar9MNcE43c1m5bbiLke/tl0KvD4bA4/WflrIBVxeT181J2dxGmZLvAqwF7Qx5jQeskucr8anwyqaZftB/fqX3lXBC1x+GsKREwiwk8AJp2i1iDovZQNW2BlhqbwaGXRLdvo/QWI5HpuGhneeUvG6hi8YLHByk3u46FDNoB6gIoNaFaa8VHVwzElDE46QWDDSQeohWXGMSx1z+A089l0eRaH4ESoV3ElfMuJQ0W8Zb1wp2PqaEs1yZB+rFVZY73/yAwGshUozhaJr5y6C6BjM1YwDjL52+6//YnPhKoSJcIAth1CgcoP3McDwHrYBayGj6jTMd1Vbsx99ekNkyV1RSpAn7tEZU2rbpGW+Ulw0RVIy+U0c2SuQ4m9QrX0/oVYchy7SePWCRpUrGlgF2XxGSYOO4edZ6s+/xcOoUSPjXXq6C/oPDuTnlvwtm+E3C4eyiGBWeZYf3dDUNUSHchSlS6NtP5WXttXqUs2MyM= 

Сгенерирован на swift :
   open key: MIGJAoGBAMboL6I5HU6C1KBeUmbs0+X4rsWTlPCUJcaEcNtHGOP1mCC2Jn20B8onmSlznb0Do61UQ1CMKLVGnIAfL1w1E2Q0J08ts01FCn4/jJPnFDGtIxS5QSSvwHBuMnCJS6/H34mJE6ctbme9T2QA4YOvhpSurmjPAEnzRHLaKv8KGSLTAgMBAAE="
private key: privateKey = "MIICXQIBAAKBgQDG6C+iOR1OgtSgXlJm7NPl+K7Fk5TwlCXGhHDbRxjj9ZggtiZ9tAfKJ5kpc529A6OtVENQjCi1RpyAHy9cNRNkNCdPLbNNRQp+P4yT5xQxrSMUuUEkr8BwbjJwiUuvx9+JiROnLW5nvU9kAOGDr4aUrq5ozwBJ80Ry2ir/Chki0wIDAQABAoGAFRF03Nb13rdcNDGpbWjPt6p+le41jBdKZQY+5KBZkj5qQv9oK6UNCiw65zlteh7PkHATbThbUNAjitftbp6Ek3G7ZDjKh+xzGGrweO3dl2ok3knCnP3mz5LQNfpLHmiwwtRFBhIGlT7U8ppRO31IrPRN8DxevivV6dnmhVrKyAECQQDjXfYCo8sE1i+prYySxiH0hGbdIt/88QpSlRv+w8WhXzkfSIrUiKuQ2xBHhFvnKILHmO03nKgUTXvbIDCpMl7TAkEA3/S1BsTKaTNUFD8XICOg0wCWrULixDMZ+roHlMeXNG9kZoEbbGgg2YHIt+HtEKGlyYX+AgGmbC6/1R83HWusAQJBAIAovXu9cblXNeSRw7QT5J3cZ9LsTo9YGvZzwCT5mxOcBinBDShBpVtwb5uwWtFQf28cn1IChqdzCYZ5fZRRpSsCQBnv1z9Pbzm7zhMCM4VvWuLVAJ5UTrr2SB33iYU7kFFsTS5p6WkmrhdCpqJVMgVpEzBBqmdFFacVyvW9xb5MiAECQQCx25DqebOY5nBgSp+iBTnDrNm7VsPJfylxehXBgZbS2Vd0hDJIZEHAJUwAcNHzoq8ejdWxdL1XLoWHPhEoqzwg

Киньте плиз ссылкой, откуда списать можно!


Ответы (0 шт):