Есть ли способ сгенерировать закрытый ключ и открытый ключ из строки, такой как пароль пользователя? Я хочу получать его каждый раз, когда пользователь вводит пароль
Я использую этот эллипс, но он случайным образом генерирует keyPair
const EC = require('elliptic').ec;
const ec = new EC('secp256k1');
let keyPair = ec.genKeyPair();
@JaromandaX да, это так
Отказ от ответственности: Не создавайте мозговые кошельки:, особенно низкоэнтропийные, созданные человеком.
Вы можете сгенерировать любое 32-байтовое значение (технически действительные закрытые ключи на кривой secp256k1 должны быть между 0x1 to 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140
) см. Биткойн Вики
Один из способов сделать это — хешировать строку, из которой вы хотите сгенерировать ключ:
const EC = require('elliptic').ec;
var crypto = require('crypto');
const ec = new EC('secp256k1');
let secret = crypto.createHash('sha256').update('password').digest('hex');
let keyPair = ec.keyFromSecret(secret);
Возможно ли иметь такой JSON: {public_key: XXXX (String), private_key: yyyy (String)}
Есть ли способ сделать это с помощью встроенной функции crypto
? то есть не используя elliptic
должны быть в состоянии. Вместо ec.keyFromSecret
попробуйте setPrivateKey
и getPublicKey
, конечно, используя createECDH('secp256k1');
для создания объекта обмена ключами. См. пример здесь: nodejs.org/dist/latest-v10.x/docs/api/…
@JBaczuk Я думаю, что ваш код неверен, потому что нет метода ec.keyFromSecret(...);
@Shruggie, криптобиблиотека не включает ни операции с эллиптическими кривыми, ни преобразования с основанием 58, поэтому, чтобы получить действительный ключ в общем формате (WIF), а также соответствующий открытый ключ, вам нужно будет перекодировать эти два .
@SinaMirshafiei keyFromSecret находится в README: npmjs.com/package/эллиптический
кажется, что вы действительно хотите очень слабое шифрование в этом случае