Пожалуйста, мне нужна ваша помощь для безопасной передачи данных с сервера на клиент. Клиент передает свой открытый ключ 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