Узел Crypto diffieHellman.setPrivateKey()

Я использовал Crypto lib в Node для обмена ключами Pub. До сих пор я только что использовал .getDiffieHellman('modp5') генерировать новый открытый / закрытый ключ для каждого нового соединения. Эта методология отлично подходит для вычисления секрета для использования с шифрованием AES.

Тем не менее, я хотел бы иметь возможность сохранить закрытый ключ в файл, а затем загрузить его при следующем выполнении. Кажется, что способ сделать это будет .getPrivateKey() а потом .setPrivateKey() но используя .setPrivateKey() на crypto.createDiffieHellman класс, сгенерированный .getDiffieHellman('modp5') не работает. Это фактически указано в документации:

Возвращенный объект имитирует интерфейс объектов, созданных функцией crypto.createDiffieHellman() выше, но не позволяет изменять ключи (например, с помощью diffieHellman.setPublicKey()).

Зная это, если я сгенерировал закрытый ключ, используя следующий код:

var crypto = require('crypto');
var Key = crypto.getDiffieHellman('modp5');
Key.generateKeys();
var PrvKey = Key.getPrivateKey();
save_to_file(PrvKey);

Как я могу загрузить тот же самый закрытый ключ позже?

var crypto = require('crypto');
var PrvKey = load_from_file();
var Key = crypto.createDiffieHellman(prime, [encoding]);
Key.setPrivateKey( PrvKey )

Я посмотрел на RFC2412, который был указан в криптографической документации, и обнаружил, что простое число для группы 5 указано как:

2 ^ 1536 - 2 ^ 1472 - 1 + 2 ^ 64 * {[2 ^ 1406 пи] + 741804}

241031242692103258855207602219756607485695054850245994265411 694195810883168261222889009385826134161467322714147790401219 650364895705058263194273070680500922306273474534107340669624 601458936165977404102716924945320037872943417032584377865919 814376319377685986952408894019557734611984354530154704374720 774996976375008430892633929555996888245787241299381012913029 459299994792636526405928464720973038494721168143446471443848 8520940127459844288859336526896320919633919

FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1 29024E088A67CC74020BBEA63B139B22514A08798E3404DD EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245 E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F 83655D23DCA3AD961C62F356208552BB9ED529077096966D 670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF

Я попытался взять этот премьер и положить его в .createDiffieHellman(prime, [encoding]), Однако после этого .setPrivateKey() жаловался на неверную длину ключа.

Любое понимание будет оценено.

0 ответов

Другие вопросы по тегам