Шифрование данных в PHP [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Шифрование данных в PHP [закрыто]

Сообщение Anonymous »

Я использовал PHP в сочетании с Curl для отправки данных для входа на веб-страницу и получения информации оттуда. До сих пор все работало нормально.
Теперь на веб-странице изменился способ входа в систему. Теперь перед отправкой пароль шифруется с помощью Javascript. Итак, чтобы мой PHP-скрипт снова заработал, мне нужно сделать то же самое, потому что пароль больше не отправляется в виде обычного текста.
После нажатия кнопки «Отправить» на веб-странице, выполняется следующий Java-скрипт:

Код: Выделить всё


async function SubmitForm() {

if ($("#User").val() && $("#Pass").val() && publicKey) {
var encrypted = await encrypt($("#Pass").val(), publicKey);
$("#Pass").val(encrypted);
}

$("form:first").submit();
}

const publicKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCt3zMwB37NjgGw7KxHrqkF5bxc
QtgisoTXre7ca0+ChWOt9/Sj2RombqqDFFnJUweObw7/dPdmBWUb8MKMcVKYEl5X
PEZaIyCZ88XTe2tSGEZXpMW0R05TrfRmVQEzWH1rVEQIIjIfrxD+fRai8b4fpVBi
UYRD3EV6FYVmK+u0sQIDAQAB
-----END PUBLIC KEY-----
`.trim();


Функция шифрования выглядит следующим образом:

Код: Выделить всё

async function encrypt(plaintext, publicKey) {
const pub = await importPublicKey(publicKey);
const encrypted = await encryptRSA(
pub,
new TextEncoder().encode(plaintext)
);
const encryptedBase64 = window.btoa(ab2str(encrypted));

return encryptedBase64;
};
и его обратные вызовы к следующим функциям:

Код: Выделить всё

function getSpkiDer(spkiPem) {
const pemHeader = "-----BEGIN PUBLIC KEY-----";
const pemFooter = "-----END PUBLIC KEY-----";
var pemContents = spkiPem.substring(
pemHeader.length,
spkiPem.length - pemFooter.length
);
var binaryDerString = window.atob(pemContents);
return str2ab(binaryDerString);
}

async function importPublicKey(spkiPem) {
return await window.crypto.subtle.importKey(
"spki",
getSpkiDer(spkiPem),
{
name: "RSA-OAEP",
hash: "SHA-1",
},
true,
["encrypt"]
);
}

async function encryptRSA(key, plaintext) {
let encrypted = await window.crypto.subtle.encrypt(
{
name: "RSA-OAEP",
},
key,
plaintext
);
return encrypted;
}

function str2ab(str) {
const buf = new ArrayBuffer(str.length);
const bufView = new Uint8Array(buf);
for (let i = 0, strLen = str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}

function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint8Array(buf));
}
Поскольку я никогда раньше не работал с шифрованием в PHP и не могу понять Javascript на 100%, я был бы благодарен за каждый удар в правильном направлении, какие PHP-функции мне нужны.
Поскольку я никогда раньше не работал с шифрованием в PHP и не могу понять Javascript на 100%, я был бы благодарен за каждый удар в правильном направлении, какие PHP-функции мне нужны.
p>
Спасибо!
Пытался работать с функцией openssl_pkey_new, но не нашел правильного пути.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ata-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»