Передача данных с сервера Django на сценарий JS с шифрованием RSA - PullRequest
0 голосов
/ 11 февраля 2020

Пожалуйста, мне нужна ваша помощь для безопасной передачи данных с сервера на клиент. Клиент передает свой открытый ключ c на сервер, а затем сервер шифрует данные и передает их клиенту. Но ничего не работает! У меня есть такая PUBLI c Клавиша:

1002 * ----- НАЧАТЬ PUBLI C KEY ----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAov3a9IMmm8TqmUw3kR1a Cafdmc6 / dwVskgOkp144IPqYcdDcvIy + WytytcMvvpqk9c9vvamBLj6g05jT2ZVR dXG5Ca35iMg6pzrmrVrhLgagcGeD7UR1smG1h0mazoGLay65gUkuknqg + xvdTtiA ввп + 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 PUBLI C KEY -----

Я передаю это на сервер:

var params = 'rsa_public='+rsa_pub_key;
    const http = new XMLHttpRequest();
    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');
        }
    }

Но когда я печатаю это в Django:

print(request.POST['rsa_public']);

Я получаю это:

-----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-----

Некоторые с символы (плюсы) исчезают.

И даже если я вручную заменю ключ publi c, шифрование не работает. Я использую модуль rsa в python для шифрования сообщения.

def set_rsa_key(request, url):
    if request.method == 'POST':
        str = request.POST['rsa_public']
        pubkey = rsa.PublicKey.load_pkcs1(b64decode(str))
        crypto = rsa.encrypt("1234", pubkey)
        return HttpResponse('true')
    return HttpResponse('false')

Пожалуйста, помогите мне!

Я получаю различные ошибки, например:

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

или

binascii.Error: Incorrect padding
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...