Создайте объект Диффи-Хеллмана из шестнадцатеричных параметров p и g - PullRequest
0 голосов
/ 05 января 2019

В моем приложении я получаю параметры diffie hellman p и g через сообщение XMPP, например:

<message to="admin@0.0.0.0/4fjd0564xh" from="keygen1546701622316@conference.0.0.0.0/admin" type="groupchat"><body>
<x xmlns="http://pcmagas.tk/gkePlusp#intiator_key">
    <p>d521b3f62a54c9a7274a2e6da70fb977e21129f0b40b0ec328b4c584572dea3c24a9d41feb13bbbcc2a894cbb8d26ccb036589ec55d2ebb32f4ec7d5c9eaa686820f06f8ff4863720f746b7b3bcd51be8b7bdfcead397600621c9b3932b3aebbe01c555e97bb6068de823f234851a883eba3d916255cfa3320d0d12c4c5fc80a263782b52636f0b978a765439c434ad71511f6be91b0f8ccb2a3cf3b54b02a68730354f3f4ff555a2f7c0bfaebc21fbbac003d7bd9e9b2b2f9bd7d73cf385a1c04c094d721a2adb0ef5f4b725ba529bd74bd73d23e0cc0f14e87d6df7bf6251ab0b8b54b63b01188675dbf56113a0e956e39e3230a3b86494902250211e762eb</p>

    <g>02</g>
   </x>
</body>
</message>

Как Node.js crypto модуль говорит, что Вы можете инициировать Диффи-Хеллмана либо через интергер, предоставляя длину параметра g:

const alice = crypto.createDiffieHellman(2048);

Или через предоставленные параметры p и g:

const bob = crypto.createDiffieHellman(alice.getPrime(), alice.getGenerator());

Но в моем потоке ключи закодированы в виде шестнадцатеричной строки, таким образом, как я могу преобразовать их в соответствующий объект, чтобы сделать соответствующий diffieHellman Объект?

1 Ответ

0 голосов
/ 05 января 2019

Как показано в следующем коде, функции getPrime и getGenerator создают объект Buffer:

const crypto = require('crypto');

const k1 = crypto.createDiffieHellman(2048);
const p = k1.getPrime();
const g = k1.getGenerator();
// Outputs true,true
console.log(Buffer.isBuffer(p), Buffer.isBuffer(g));

Таким образом, вы можете сгенерировать объект Диффи-Хеллмана из шестнадцатеричных строк с помощью:

//pInHex,gInHex hex encoded p and g
const p = Buffer.from(pInHex,'hex');
const g = Bugger.from(gInHex,'hex');
const dh = crypto.createDiffieHellman(p, g);

Как видно из документации , вы можете создавать буферы из шестнадцатеричных строк.

...