Зашифровать текст публичным ключом RSA

У меня есть ключ в таком формате:

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAov3a9IMmm8TqmUw3kR1a
Cafdmc6/dwVskgOkp144IPqYcdDcvIy WytytcMvvpqk9c9vvamBLj6g05jT2ZVR
dXG5Ca35iMg6pzrmrVrhLgagcGeD7UR1smG1h0mazoGLay65gUkuknqg xvdTtiA
GDp zJKQUS06r2Yy9P5U1zqv8GLAPTAI1owVbo2syPXVW5G4LtWRIR9Q928SsbdL
rOH MOHQTT6qLPFyOh6yU0L8bSkffi8Sj6CK7SmyCAuQta7ACPI4/tj1ARtLHZaa
UIsNoA 6eLfQu0M79Iew2NzSMP2JZINhdB83bzq 3kE40pWL9 81mAqCSntM 2Uv
6wcvXnZ2E tTFJchwzR27NAMchMco0Yf VsedMVsjmDnQ66V8FWNync/qWyTXj6H
XhcgHLfuS9zfDntPDr7DCmxOESwJlmEsG4JQofyAuzYf34Y18ct3pNj TieT3vA4
YV1YQQFhXfbFD7ScZKyfIjUoqMJUNAVAe5fVtM1PT91ha3bBu0JY7NjLA5Ey/mpT
jqoF/M11BshskKII866pkQqj2tem3J2k95IfH oIg0rsruEDtvWZC1FmrmXUR3T0
ZC2y7h6gYI4zBC60xeaLWhC98OQVAq0x32FfaOQbnNR94WqrmOpR79OiWsYIpHZW
O/y6/1SSRJROW0YIEK0mjH0CAwEAAQ==
-----END PUBLIC KEY-----

Но никак не могу разобраться как его использовать. Библиотека crypto вообще не работает, pycrypto не устанавливается. Установил библиотеку rsa, но при вызове функции rsa.encode(msg, key) он ругается, что ключ содержит некорректные символы.

Как зашифровать текст с помощью этого ключа?

Вот JS код, который генерирует публичный ключ и отправляет его на сервер:

function init_rsa_keypair(){
// Basic initialization
var crypt = new Crypt();
var rsa = new RSA();
/*
var rsa = new RSA({
    keySize: 1024,
    rsaStandard: 'RSAES-PKCS1-V1_5', // RSA-OAEP or RSAES-PKCS1-V1_5,
});
*/

//var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
//U2FsdGVkX18ZUVvShFSES21qHsQEqZXMxQ9zgHy+bu0=

//var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
    alert(supports_html5_storage());
    var str_url_q = window.location.href;
    var arr_url_q = str_url_q.split('/');
    var url_q = arr_url_q[arr_url_q.length - 1];
    var rsa_pub_key = localStorage.getItem("rsa_pub_key"+url_q);
    var rsa_private_key = localStorage.getItem("rsa_private_key"+url_q);
    //alert("rsa_pub_key"+url_q);
    if (rsa_pub_key && rsa_private_key){
        //alert(rsa_pub_key);
        //alert(rsa_private_key);
    }else{
        rsa.generateKeyPair(function(keyPair) {
            // Callback function receives new key pair as a first argument
            var publicKey = keyPair.publicKey;
            var privateKey = keyPair.privateKey;
            localStorage.setItem("rsa_pub_key"+url_q, publicKey);
            localStorage.setItem("rsa_private_key"+url_q, privateKey);
            rsa_pub_key = publicKey;
            rsa_private_key = privateKey;
        });
    }
    var params = 'rsa_public='+rsa_pub_key;
    const http = new XMLHttpRequest();
    alert(rsa_pub_key);
    var encrypted = crypt.encrypt(rsa_pub_key, "1111");
    //alert( getCookie("token"));
    http.open('POST', '/lk/set_rsa_key/'+url_q);
    http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    http.send(params) // Make sure to stringify
    http.onreadystatechange = function() {
        // проверяем состояние запроса и числовой код состояния HTTP ответа
        if (this.readyState == 4 && this.status == 200) {
        alert('ok');
        }
    }

}

Вот Python код, в котором пытаюсь зашифровать сообщение с помощью переданного публичного ключа:

def set_rsa_key(request, url):
    auth = UsersAuth.objects.filter(token=request.COOKIES['token']).first()
    user = Users.objects.filter(username=auth.username).first()
    chat = Chats.objects.filter(users=user, url=url).first()
    if request.method == 'POST':
        print(request.POST['rsa_public'])
        pubkey = rsa.PublicKey.load_pkcs1(request.POST["rsa_public"])
        crypto = rsa.encrypt("1123", pubkey)
        print(crypto)
        print(request.POST['rsa_public'])
        return HttpResponse('true')
    return HttpResponse('false')

Ошибку выдает следующую:

No PEM start marker "b'-----BEGIN RSA PUBLIC KEY-----'" found

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