В python я получаю некий хеш с помощью данной серии команд:
>>> import rsa
>>> import base64
>>> from django.conf import settings
>>> with open(settings.KEY_FILE, 'rb') as keyf:
... priv_key = rsa.PrivateKey.load_pkcs1(keyf.read(), format='PEM')
...
>>> mess = 'var1=123\r\nvar=456\r\n'
>>> sign = rsa.sign(mess, priv_key, "SHA-1")
>>> import urllib
>>> from base64 import standard_b64encode
>>> b64sign = urllib.quote(standard_b64encode(sign), safe='')
>>> b64sign
Вопрос - какой аналог в Node.js. Все перепробованные мной варианты не возвращают тот же хеш, что возвращает питон
В node.js использую примерно такие команды:
const NodeRSA = require('node-rsa')
const urlencode = require('urlencode')
fs.readFile(config.keyFile, 'ascii', function (err,content) { // keyFile тот же что и в Python
if (err) {
return console.log('error ', err);
}
rsa_key = content
var my_hash = mess // mess такой же как в Python
var key = new NodeRSA(rsa_key, 'pkcs1-private-pem')
key.setOptions({signingScheme: 'pss-sha1'}) // тут перебирал все доступные варианты
my_hash = key.encryptPrivate(my_hash, 'base64')
console.log(urlencode(my_hash))
}
хеши и близко не совпадают