Я получил эту ошибку с сервера nodejs при выполнении входа в систему через HTTP-запрос POST:
процедуры цифрового конверта: EVP_DecryptFinal_ex: плохая расшифровка
Я создал ключи с помощью :
openssl genpkey -out privateKEY.pem -aes256 -algorithm rsa -pkeyopt rsa_keygen_bits:4096
и
openssl pkey -in privateKEY.pem -out publicKEY.pem -pubout
Как мне решить эту проблему?
Это код:
var mysql = require('mysql');
var express = require('express');
var cors = require('cors');
const jwt = require('jsonwebtoken');
var sanitizer = require('sanitizer');
const fs = require("fs");
var app = express();
app.use(cors());
var connection = mysql.createConnection({
host: '127.0.0.1',
user: 'andrea',
password: 'password',
database: 'cars_market_place'
});
try{
connection.connect();
}catch(err){
console.error("Error:"+err);
}
const RSA_PRIVATE_KEY = fs.readFileSync('./privateKEY.pem');
function LinkMysql(query) {
return new Promise(function(resolve, reject) {
connection.query(query, function(err, result) {
if (err)
console.log('error: ' + err);
resolve(result);
});
});
}
app.post('/login', async function(request, response) {
let username = request.query.username;
let password = request.query.password;
if (username && password) {
usernameS = sanitizer.sanitize(request.query.username);
getUser(connection.escape(usernameS)).then( function(user){
if (!user) {
console.log("user not found:"+ username);
response.status(401).json({ msg: 'No such user found', user: username });
}
if (user.password === password) {
const jwtBearerToken = jwt.sign({}, RSA_PRIVATE_KEY, {
algorithm: 'RS256',
expiresIn: 120,
subject: user.username
})
response.json({ msg: 'ok', token: jwtBearerToken });
} else {
response.status(401).json({ msg: 'Password is incorrect' });
}
}).catch( (err) => {
console.error('error='+err);
});
}
});
function getUser(username){
return new Promise((resolve, reject) => {
query = 'SELECT * FROM `users` WHERE `users`.`username` = ' + username;
console.log('query='+query);
LinkMysql(query).then(function(data) {
console.log("data="+data[0].username);
console.table(data);
resolve(data[0]);
reject(null);
}).catch((err)=> {
console.log('Error:'+err);
});
});
}
app.listen(8080);
console.log('server listing on 8080');