crypto.computeSecret возвращает массив чисел вместо строки

0

С помощью Node crypto, когда я регистрирую результаты в узле, они верны, но когда я передаю данные в frontend (Angular), то записывают результаты, он дает массив. Код почти точно такой же. Может ли кто-нибудь сказать мне, почему он дает мне массив вместо строки?

Узел:

app.get('/crypto', function(req, res) {

  var group = 'modp5';
  var aliceDH = crypto.getDiffieHellman(group);
  var bobDH = crypto.getDiffieHellman(group);
  aliceDH.generateKeys();
  bobDH.generateKeys();
  var publicKeys = aliceDH.getPublicKey('hex')
  console.log('pubkey: ', publicKeys)
  var bobSecret = bobDH.computeSecret(publicKeys, 'hex', 'hex')

  console.trace('Bob: ', bobSecret)

  res.send(publicKeys)
})

Журнал:

pubkey: 72544df4dbc54e575814a1181eb42540d9220ce12ae47fac062ddd3c2f0c32a8793cfbf68099bebf0cef7aab52189c64e4830327d5bdc3d01f9a698ce86280c92ae9942a774f26b892635836b6bea5a413dc183c3cbfeca5e393e019e9940f47d9cc2d9657a03dc77a386c3892e40e1d23507a28ba285a43e90f817b76c8afd420bcedd0f808487133c17e215b0f5e0a5548a25558f8958a2b5e065c35c409d5db86680aab5499dbf8190677ef4225c93ef43e7b73b8ee69c941d16d292e879d

Bob: 6b078a9ce92b1f272930428cc0b6fc671eb377d936bbe37caffadd5d9d69755afd088236c73a3be8e86009b5de4dc7d32f4389129e332096e7064256469a700158a67cd1e1f59e25cdd135cb0c03bc904e8c5f571ed2c6662fbe8053396ec8dd5082787277644e592957546b43064d4fc9ea79def463e1092d0f54d62dad35a80e1896aeabadf7b44621090e52f45e422c7a0ffbfb9448b94c1c9afed08c4e97a27ba49115c2f87bf7b6547e8fa0b6011672d1ba4442e00bd4caac0f99f44428

Угловой:

$http.get('/crypto').then(function (res) {
            var key = res.data
            console.log(key)
            var group = 'modp5';

            var bobDH = crypto.getDiffieHellman(group);
            bobDH.generateKeys();

            var bobSecret = bobDH.computeSecret(key, 'hex', 'hex')
            console.log(bobSecret)

Журнал:

72544df4dbc54e575814a1181eb42540d9220ce12ae47fac062ddd3c2f0c32a8793cfbf68099bebf0cef7aab52189c64e4830327d5bdc3d01f9a698ce86280c92ae9942a774f26b892635836b6bea5a413dc183c3cbfeca5e393e019e9940f47d9cc2d9657a03dc77a386c3892e40e1d23507a28ba285a43e90f817b76c8afd420bcedd0f808487133c17e215b0f5e0a5548a25558f8958a2b5e065c35c409d5db86680aab5499dbf8190677ef4225c93ef43e7b73b8ee69c941d16d292e879d

[174, 55, 88, 166, 67, 161, 206, 242, 245, 45, 4, 212, 164, 86, 84, 227, 65, 87, 190, 127, 204, 185, 217, 9, 66, 239, 242, 36, 211, 133, 195, 17, 208...]

Я предполагаю, что это имеет какое-то отношение к тому, как я передаю открытый ключ, но я не могу понять, в чем проблема. Это кажется прекрасным, но я нигде не могу найти решение. Я нашел тот же самый вопрос здесь, на SO, но на него не ответил.

ПРИМЕЧАНИЕ: версия узла - 0,12.16, а угловая версия - 1.4.7

EDIT: Выполняя больше тестов на этом, и я считаю, что использование ТОЧНОГО ОДИНАКОВНОГО КОДА со стороны узла все еще дает мне массив. Поэтому даже не делать http-вызов - на самом деле использование того же кода все равно дает мне массив.

Теги:

1 ответ

0
Лучший ответ

Я, наконец, понял эту проблему. Хотя я сказал ему делать все в шестнадцатеричном виде, он фактически выдавал ключ в качестве буфера, поэтому я добавил .toString('hex') и он, наконец, преобразован в hex, и я смог его использовать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню