2017-03-20 2 views
0

Mit Nodes Krypto, wenn ich Ergebnisse in Node protokolliere, sind sie korrekt, aber wenn ich Daten in Frontend (Angular) übergebe und dann Ergebnisse protokolliere, erhält man ein Array. Der Code ist fast genau derselbe. Kann mir jemand sagen, warum er mir ein Array anstatt einer Zeichenfolge gibt?crypto.computeSecret gibt Array von Zahlen statt String zurück

Knoten:

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) 
}) 

Log:

pubkey: 72544df4dbc54e575814a1181eb42540d9220ce12ae47fac062ddd3c2f0c32a8793cfbf68099bebf0cef7aab52189c64e4830327d5bdc3d01f9a698ce86280c92ae9942a774f26b892635836b6bea5a413dc183c3cbfeca5e393e019e9940f47d9cc2d9657a03dc77a386c3892e40e1d23507a28ba285a43e90f817b76c8afd420bcedd0f808487133c17e215b0f5e0a5548a25558f8958a2b5e065c35c409d5db86680aab5499dbf8190677ef4225c93ef43e7b73b8ee69c941d16d292e879d

Bob: 6b078a9ce92b1f272930428cc0b6fc671eb377d936bbe37caffadd5d9d69755afd088236c73a3be8e86009b5de4dc7d32f4389129e332096e7064256469a700158a67cd1e1f59e25cdd135cb0c03bc904e8c5f571ed2c6662fbe8053396ec8dd5082787277644e592957546b43064d4fc9ea79def463e1092d0f54d62dad35a80e1896aeabadf7b44621090e52f45e422c7a0ffbfb9448b94c1c9afed08c4e97a27ba49115c2f87bf7b6547e8fa0b6011672d1ba4442e00bd4caac0f99f44428

Eckig:

$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) 

Log:

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...]

ich es vermute, ich muss etwas zu tun, wie ich in dem öffentlichen Schlüssel bin vorbei, aber ich kann nicht scheinen, um herauszufinden, was das Problem ist . Es scheint gut, aber ich kann nirgends eine Lösung finden. Ich habe genau die gleiche Frage hier auf SO gefunden, aber sie wurde nicht beantwortet.

SIDE HINWEIS: Der Knoten Version ist 0.12.16 und abgewinkelte Ausführung ist 1.4.7

EDIT: mehr Tests auf dieser Weise, und ich finde, dass der exakt gleichen Code aus der Knotenseite immer noch mit mir gibt eine Array. Also nicht einmal einen http-Aufruf - eigentlich benutze ich den gleichen Code immer noch ein Array.

Antwort

0

Ich endlich herausgefunden, das Problem. Obwohl ich ihm gesagt habe, dass er alles in hex tun soll, gab er den Schlüssel eigentlich als Puffer, also fügte ich .toString('hex') hinzu und konvertierte schließlich zu hex, und ich konnte es benutzen.

Verwandte Themen