fox_12
@fox_12
Расставляю биты, управляю заряженными частицами

RSA. Аналог на nodejs?

В 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))
}


хеши и близко не совпадают
  • Вопрос задан
  • 367 просмотров
Решения вопроса 1
fox_12
@fox_12 Автор вопроса, куратор тега Python
Расставляю биты, управляю заряженными частицами
Проблему решил данным участком кода:
var out_ = windows1251.encode(out, {})
    var signer = crypto.createSign('RSA-SHA1')
    signer.update(out_)
    var pem = fs.readFileSync(config.keyFile)
    var rsa_key = pem.toString('ascii')
    var res = signer.sign(rsa_key, 'base64')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы