lightarhont
@lightarhont
python/php developer

Как создать такой же private Key в Python как в Node?

const crypto = require("crypto");
const privateKeyString = "длинная строка в hex";

const privateKey = crypto.createPrivateKey({
  key: privateKeyString,
  format: 'der',
  type: 'pkcs8',
  encoding: 'hex'
});

const publicKey = crypto.createPublicKey(privateKey).export({
  type: 'pkcs1',
  format: 'der'
});

const message = {
  "jsonrpc": "2.0",
  "id": "test",
  "method": "getStatus",
  "params": {
    "id": "psj42e728a572mtkz"
  }
};

const signature = crypto.sign('sha256', Buffer.from(JSON.stringify(message)), {
  key: privateKey,
  type: 'pkcs8',
  format: 'der'
});


Пока не знаю куда копать даже, теоретически есть https://cryptography.io/en/latest/hazmat/primitive... Если не можете помочь с ответом на python достаточно будет просто расписать что происходит на этапе crypto.createPrivateKey поскольку дока гугления на Python упирается в создание, а тут скорее серилизация
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
lightarhont
@lightarhont Автор вопроса
python/php developer
Ответ решил сам, всем спасибо...

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat import backends
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes
import base64

private_key = serialization.load_der_private_key(pub_key_bytes, password=None, backend=default_backend())
signature = private_key.sign(data=serialized_data.encode('utf-8'),algorithm=hashes.SHA256(), padding=padding.PKCS1v15())
sign = base64.b64encode(signature).decode('utf-8')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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